执行语句而不指定表

j2qf4p5b  于 2021-06-20  发布在  Mysql
关注(0)|答案(4)|浏览(330)

select 2 + 2 是一个有效的mysql语句,但在oracle中我必须提供一个表名 select 2 + 2 from foo (或 dual 表)。有没有什么办法不把 from 声明?我想知道为什么它在oracle中不是可选的。提供一个假表听起来很假,因为它可以作为其他rdbms的选择。

afdcj2ne

afdcj2ne1#

一般来说,这与sql无关,但在sql*plus或其他以脚本(f5)形式运行的IDE中,您可以在不指定表的情况下执行算术

VARIABLE b NUMBER
EXEC :b := 2+2;
PRINT b;

PL/SQL procedure successfully completed.

         B
----------
         4
fgw7neuy

fgw7neuy2#

使用dual,因为它是一个数据类型为varchar2(1)的单行单列表。要获取单个输出时,请始终使用dual。它的伪值为x。正如wiki所说:-这个想法是您可以对dual表进行连接,并为表中的每一行在结果中创建两行。然后,通过使用GROUPBY,可以汇总得到的联接,以显示数据区和索引区的存储量。名称dual似乎适合于从一行创建一对行的过程
原来的双表中有两行(因此得名),但后来只有一行。

z3yyvxxp

z3yyvxxp3#

例如,在oracle中使用pl/sql子程序可以执行2+2

DECLARE
    v_sum number;
BEGIN
    v_sum:= 2 + 2;
END;
2admgd59

2admgd594#

你必须从某物中选择;在甲骨文中,它是 DUAL 表格:

SQL> select 3 + 6 from dual;

       3+6
----------
         9

它是一个 SYS 拥有的表并包含一行:

SQL> select * From dual;

DUMMY
--------------------
X

因此,它对于这样的事情很有用(需要获取一行)。
按照你的说法( select ... from foo )如果foo还包含一行,则可以。但是,如果没有呢?看一看:医院有4个部门 dept 表格:

SQL> select 3 + 6 from dept;

       3+6
----------
         9
         9
         9
         9

所以-使用 DUAL :)

相关问题