DUAL只是虚表,只是有个值就可以,你可以把X换成别的
SYSDATE可以从任何非空表中选出

解决方案 »

  1.   

    dual表不是什么虚表,是一个实实在在的表,在sys用户下,该表只有一个字段,
    SQL> desc dual
     Name                            Null?    Type
     ------------------------------- -------- ----
     DUMMY                                    VARCHAR2(1)
    该表只有一条记录:
    SQL> select * from dual;
    D
    -
    X这个表的作用是在使用select语法但是不需要从某个基表中读取数据的时候,保证语法的完整,如:
    SELECT SYSDATE FROM DUAL;
      

  2.   

    对,其实它是一个实际表,很多人以为它不存在。
    我曾经遇到过一次错误,这个表里出现了128条记录。
    结果所有用到dual表的数据都出错了。
    后来手工删除了这个表,然后重建就好了。
    其实没有那么神秘,大家当成一个只有一条记录的普通表就可以了。
      

  3.   

    含义解释: 
    Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select中。使用方法: 
    查看当前连接用户
    SQL> select user from dual;USER
    ------------------------------
    SYSTEM
    查看当前日期、时间
    SQL> select sysdate from dual;SYSDATE
    ----------
    18-3月 -01
    SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR(SYSDATE,'YY
    -------------------
    2001-03-18 22:37:56
    当作计算器用
    SQL> select 1+2 from dual;       1+2
    ----------
             3
    查看序列值
    SQL> create sequence aaa increment by 1 start with 1;
    SQL> select aaa.nextval from dual;SQL> select aaa.nextval from dual;   NEXTVAL
    ----------
             1
    SQL> select aaa.currval from dual;   CURRVAL
    ----------
             1
      

  4.   

    为了保证select ... from 的完整性而做出来的其实如果你在系统离自己随便创建一个表,里面塞上一条记录,
    然后使用 select sysdate from 你的表
    出来的效果完全一样
      

  5.   

    作用是在使用select语法但是不需要从某个基表中读取数据的时候,保证语法的完整.或者计数器用,如果没有基表的时候,都可以用
      

  6.   

    同意:KingSunSha(弱水三千)的观点!
         说得好!