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


当前回答

这是一种伪表,您可以对其运行命令并获得结果,例如sysdate。还可以帮助您检查Oracle是否启动和检查sql语法等。

其他回答

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

 SELECT 3+4

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

 SELECT 3+4 FROM DUAL

代替。

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

SELECT * FROM dual;

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

假 ----- X

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

语法:SELECT 'sequence_name'。Nextval from dual

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

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

从对偶中选择2*4打印出计算结果 从双打印服务器当前日期中选择sysdate。

另一种情况需要选择…当我们想要检索不同数据库对象(如TABLE, FUNCTION, TRIGGER, PACKAGE)的代码(数据定义)时,使用内置的DBMS_METADATA。GET_DDL功能:

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

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

的确,现在的ide确实提供了查看表的DDL的功能,但是在SQL Plus这样的简单环境中,这是非常方便的。

EDIT

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

select my_function(<input_params>) from dual;

这两个食谱都摘自Josh Juneau和Matt Arena所著的《Oracle PL/SQL recipes》一书