对偶表用于选择伪列。
它具有一行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/

    10-13 02:56