对偶表用于选择伪列。
它具有一行DUMMY且其值为X的一列。
我有两个问题
专栏是什么意思?
值,例如:
select sysdate from dual
将导致当前日期时间。这怎么可能?
最佳答案
伪列是一个返回系统生成值的函数。 sysdate
是一个返回当前日期时间的函数; rownum
是一个伪列,它返回结果集中的行号。
该术语可追溯到Oracle的早期,即使用PL/SQL之前的名称。这只是意味着我们可以在SELECT语句的投影中使用这些功能,就像表的列一样。如今,我们可以编写我们自己的函数,并在SQL语句中使用它们而不会闪烁,因此“伪列”一词有点令人困惑。
区分函数和伪列的功能是,伪列为结果集中的每一行返回不同的值,而函数返回相同的值(除非表中的某些列作为参数传递以得出该值) )。
Dual是Oracle历史上另一个古老的片段。它是一个表,其中包含一行,数据库知道该表也包含一行。因此,您引用的select语句只是说“给我当前的日期时间”。它在功能上等同于
select sysdate
from emp
where rownum = 1
/
在PL/SQL中,从双重选择中选择是无效的。我们可以这样编写:
l_date := sysdate;
DUAL的一种常见用法是在触发器中获取序列的下一个值。从11克起我们就可以...
:new.id := my_seq.nextval;
在幕后,它仍然执行
select my_seq.nextval into :new.id from dual;
关于sql - 伪列和DUAL表-它们实际上是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2369142/