ChatGPT解决这个技术问题 Extra ChatGPT

Oracle中的双表是什么?

我听说有人提到这张桌子,但不确定它是关于什么的。

asktom.oracle.com/pls/asktom/… 有关双重的详细信息
最好的答案是关于双重asktom.oracle.com/pls/asktom/…,人们没有更多地关注上面的评论链接,这就是我在这里评论的原因..看看它,你不会后悔的

V
Vishwanath Dalvi

它是一种带有单个记录的虚拟表,用于在您实际上对数据不感兴趣时进行选择,而是希望在 select 语句中获得某些系统函数的结果:

例如select sysdate from dual;

请参阅http://www.adp-gmbh.ch/ora/misc/dual.html


V
Vishwanath Dalvi

这是一个包含一个元素的虚拟表。它很有用,因为 Oracle 不允许像这样的语句

 SELECT 3+4

您可以通过编写来解决此限制

 SELECT 3+4 FROM DUAL

反而。


R
Ruben Bartelink

来自Wikipedia

历史

DUAL 表由 Oracle 公司的 Chuck Weiss 创建,用于提供用于连接内部视图的表:

我在 Oracle 数据字典中创建了 DUAL 表作为基础对象。它本身并不打算被看到,而是在预期被查询的视图中使用。想法是您可以对 DUAL 表执行 JOIN,并在结果中为表中的每一行创建两行。然后,通过使用 GROUP BY,可以汇总生成的连接以显示 DATA 范围和 INDEX 范围的存储量。 DUAL 这个名字似乎很适合从一个行创建一对行的过程。 1

从上面可能看不出来,但原来的 DUAL 表中有两行(因此得名)。现在它只有一排。

优化

DUAL 原本是一张表,数据库引擎在选择 DUAL 时会对该表进行磁盘 IO。该磁盘 IO 通常是逻辑 IO(不涉及物理磁盘访问),因为磁盘块通常已经缓存在内存中。这导致针对 DUAL 表的大量逻辑 IO。

Oracle 数据库的更高版本已经过优化,即使 DUAL 表仍然存在,数据库也不再对 DUAL 表执行物理或逻辑 IO。


J
Jorge Ferreira

我认为这篇维基百科文章可能有助于澄清。

http://en.wikipedia.org/wiki/DUAL_table

DUAL 表是一种特殊的单行表,默认情况下出现在所有 Oracle 数据库安装中。它适用于选择伪列,例如 SYSDATE 或 USER 该表有一个名为 DUMMY 的 VARCHAR2(1) 列,其值为“X”


R
RustyTheBoyRobot

这是Oracle中的特殊表。我经常用它来计算或检查系统变量。例如:

select 2*4 from dual 打印出计算结果

Select sysdate from dual 打印服务器当前日期。


佚名

一种可以运行命令并返回结果的伪表,例如 sysdate。还可以帮助您检查 Oracle 是否已启动并检查 sql 语法等。


N
NealWalters

Oracle 中只有 1 行 1 列的实用程序表。它用于执行许多算术运算,通常可用于需要生成已知输出的地方。

选择 * 从双;

将给出单行,单列名为“DUMMY”,值为“X”,如下所示:

假人 ----- X


S
Sakin

DUAL 表是一种特殊的单行表,默认情况下出现在所有 Oracle 数据库安装中。适用于选择 SYSDATE 或 USER 等伪列

该表有一个名为 DUMMY 的 VARCHAR2(1) 列,其值为“X”

您可以在 http://en.wikipedia.org/wiki/DUAL_table 中阅读所有相关信息


s
steevc

DUAL 在 PL/SQL 开发中是必要的,以使用仅在 SQL 中可用的功能

例如

DECLARE
x XMLTYPE;
BEGIN
SELECT xmlelement("hhh", 'stuff')
INTO x
FROM dual;
END;

V
Venkataramesh Kommoju

更多关于 DUAL 的事实......

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1562813956388

在这里完成了激动人心的实验,以及汤姆更激动人心的解释


V
Vishwa G

DUAL 我们主要用于从序列中获取下一个数字。

语法:SELECT 'sequence_name'.NEXTVAL FROM DUAL

这将返回一行一列的值(NEXTVAL 列名)。


从 11g 开始就没有必要了。序列可以在 PL/SQL 中原生使用。
N
Newton fan 01

另一种需要 select ... from dual 的情况是,当我们想要使用内置的 DBMS_METADATA.GET_DDL 函数检索不同数据库对象(如 TABLE、FUNCTION、TRIGGER、PACKAGE)的代码(数据定义)时:

select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;

select DBMS_METADATA.GET_DDL('FUNCTION','<function_name>') from DUAL;

确实,如今的 IDE 确实提供了查看表的 DDL 的功能,但在 SQL Plus 等更简单的环境中,这确实很方便。

编辑

更一般的情况:基本上,当我们需要在标准 SQL 语句中使用任何 PL/SQL 过程时,或者当我们想从命令行调用过程时:

select my_function(<input_params>) from dual;

这两个秘籍均取自 Josh Juneau 和 Matt Arena 所著的“Oracle PL/SQL Recipes”一书


M
Manjunatha B

DUAL 是特殊的一行一列表,默认情况下出现在所有 Oracle 数据库中。 DUAL 的所有者是 SYS。

DUAL 是由 Oracle 数据库与数据函数一起自动创建的表。它总是用于获取操作系统函数(如日期、时间、算术表达式等)

SELECT SYSDATE from dual;  

佚名

这是一个放入 from 的对象,返回 1 个空行。例如:从对偶中选择1;返回 1

从对偶中选择 21+44;返回 65

从对偶中选择 [sequence].nextval;返回序列中的下一个值。