dual是sys用户的一张虚拟表,任何用户均可访问,但是只能返回一行数据。该表只有一行一列,其实该表和系统中的其他表一样,一样可以执行插入、更新、删除操作,还可以执行drop操作。但是不要去执行drop表的操作,否则会使系统不能用,数据库起不了,会报Database startup crashes with ORA-1092错误。此时也不要慌乱,可以通过执行以下步骤来进行恢复。可以用sys用户登陆。在对dual表进行操作时,ORACLE对dual表的操作做了一些内部处理,尽量保证DUAL表中只返回一条记录.当然这写内部操作是不可见的 .我们可以用这个表来做一些如下的事情:
1.可以查看当前用户
select user from dual
2.调用系统函数
select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) fromdual;——获得当前系统时间
select SYS_CONTEXT(’USERENV’,’TERMINAL’) fromdual; ——获得主机名
select SYS_CONTEXT(’USERENV’,’language’) fromdual; ——获得当前locale
select dbms_random.random fromdual; ——获得一个随机数
select sysdate from dual; ——获得oracle系统时间
3.得到序列的下一个或当前值
select your_sequence.nextval fromdual;——获得序列your_sequence的下一个值
select your_sequence.currval fromdual;——获得序列your_sequence的当前值
4.用作计算器
select 7*9 fromdual