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


当前回答

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

 SELECT 3+4

您可以通过编写来绕过这个限制

 SELECT 3+4 FROM DUAL

代替。

其他回答

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

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

DUAL表是一个特殊的单行表 表默认存在于所有Oracle中 数据库安装。这是合适的 用于选择伪列 例如SYSDATE或USER表有 一个单独的VARCHAR2(1)列称为 值为“X”的DUMMY

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

SELECT * FROM dual;

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

假 ----- X

DUAL是一种特殊的单行一列表,默认存在于所有Oracle数据库中。DUAL的所有者是SYS。

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

SELECT SYSDATE from dual;  

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

 SELECT 3+4

您可以通过编写来绕过这个限制

 SELECT 3+4 FROM DUAL

代替。

DUAL是PL/SQL开发中使用仅在SQL中可用的函数所必需的

e.g.

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