Vij*_*jay 5 sql oracle dual-table
双表用于选择伪列.它有一行和一列DUMMY,其值为X.
我有两个问题
双能如何赋予价值例如:
select sysdate from dual
Run Code Online (Sandbox Code Playgroud)
将导致当前的日期时间.这怎么可能?
伪列是返回系统生成值的函数. sysdate是一个返回当前日期时间的函数; rownum是一个伪列,它返回结果集中的行号.
在我们使用PL/SQL之前,术语可以追溯到Oracle的早期阶段.它只是意味着我们可以在SELECT语句的投影中使用这些函数,就像表的列一样.现在我们可以编写自己的函数并在SQL语句中使用它们而不会闪烁,因此短语"伪列"有点令人困惑.
区分函数和伪列的特性是伪列为结果集中的每一行返回不同的值,而函数返回相同的值(除非表中的某些列作为参数传递以派生值).
Dual是Oracle历史上另一个值得尊敬的片段.它是一个包含一行的表,数据库知道它包含一行.所以你引用的select语句只是说"给我当前的日期时间".它在功能上等同于
select sysdate
from emp
where rownum = 1
/
Run Code Online (Sandbox Code Playgroud)
在PL/SQL中,从双重选择是无效的.我们可以编写代码:
l_date := sysdate;
Run Code Online (Sandbox Code Playgroud)
DUAL的一个常见用途是在触发器中获取序列的下一个值.自11g以来我们可以......
:new.id := my_seq.nextval;
Run Code Online (Sandbox Code Playgroud)
在封面下,这仍然执行 select my_seq.nextval into :new.id from dual;
| 归档时间: |
|
| 查看次数: |
27400 次 |
| 最近记录: |