我有以下查询在postgresql中完美运行:
Select 'Tom' as name
输出为:
name
Tom
Oracle中相应的查询应该是什么?
如果我在Oracle中运行查询,则会出错,但在postgresql中运行成功。
答案 0 :(得分:3)
Oracle不允许在没有from
子句的情况下进行查询。对于这些类型的查询,Oracle提供了一个名为dual
的系统表,其中包含一列和一行:
SELECT 'Tom' as name FROM dual
答案 1 :(得分:2)
Oracle需要from子句。在这种情况下,您必须使用DUAL表。
select 'Tom' as name from dual;
答案 2 :(得分:2)
甲骨文(afaik)在其他RMDBS中并不常见,因为它强制要求如果您选择了某些内容,则必须从表格中选择它。
为此,有DUAL table。它是一个特殊的一行一列表,允许您在SQL中选择常量,函数等,而不必编写PL / SQL过程。
我说"特别"因为,自10g以来,优化器认识到它与其他表不同,因此可以在生成执行路径时使用该信息,使其比使用" normal"一列,一行表。