我听到有人提到过这张桌子,但不确定它是关于什么的。
当前回答
另一种情况需要选择…当我们想要检索不同数据库对象(如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》一书
其他回答
我认为维基百科的这篇文章可能有助于澄清。
http://en.wikipedia.org/wiki/DUAL_table
DUAL表是一个特殊的单行表 表默认存在于所有Oracle中 数据库安装。这是合适的 用于选择伪列 例如SYSDATE或USER表有 一个单独的VARCHAR2(1)列称为 值为“X”的DUMMY
它是一个包含一个元素的虚拟表。它很有用,因为Oracle不允许这样的语句
SELECT 3+4
您可以通过编写来绕过这个限制
SELECT 3+4 FROM DUAL
代替。
DUAL主要用于从序列中获取下一个数字。
语法:SELECT 'sequence_name'。Nextval from dual
这将返回一行一列的值(NEXTVAL列名)。
DUAL表是一个特殊的单行表,默认存在于所有Oracle数据库安装中。它适合用于选择伪列,如SYSDATE或USER
该表有一个名为DUMMY的VARCHAR2(1)列,其值为“X”
你可以在http://en.wikipedia.org/wiki/DUAL_table上阅读所有相关信息
关于DUAL的更多事实....
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1562813956388
这里做的令人激动的实验,还有汤姆更令人激动的解释
推荐文章
- Oracle中的双表是什么?
- Oracle中不区分大小写的搜索
- 如何在Oracle SQL开发者中导出查询结果到csv ?
- Oracle SQL Developer多表视图
- 如何在Oracle中做top 1 ?
- Oracle Partition By关键字
- 如何使用服务名而不是SID连接到Oracle
- 从多个表中选择count(*)
- 内部连接vs Where
- 我如何列出一个表中的所有列?
- 如何在不复制数据的情况下创建Oracle表的副本?
- Oracle中的varchar和varchar2有什么区别?
- 如何在Oracle中查找表中的重复值?
- Oracle SQL:用另一个表的数据更新一个表
- ORA-12514 TNS:监听器当前不知道连接描述符中请求的服务