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


当前回答

另一种情况需要选择…当我们想要检索不同数据库对象(如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》一书

其他回答

DUAL表是一个特殊的单行表,默认存在于所有Oracle数据库安装中。它适合用于选择伪列,如SYSDATE或USER

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

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

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

例如:select sysdate from dual;

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

从23c开始,Oracle支持选择sysdate /*或其他值*/,而不是from dual,因为MySQL已经支持了一段时间。

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

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

SELECT SYSDATE from dual;  

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

SELECT * FROM dual;

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

假 ----- X

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

e.g.

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