dual表相关
dual 确实是一张表.是一张只有一个字段,一行记录的表.
习惯上,我们称之为'伪表'.因为他不存储主题数据.
他的存在,是为了操作上的方便.因为select 都是要有特定对象的.
若不需要从具体的表来取得表中数据,而是单纯地为了得到一些我们想得到的信息,并要通过select 完成时,就要借助一个对象,这个对象,就是dual;

比如:
SQL> desc dual;
Name Null? Type
----------------------------------------- -------- ----------------------------
DUMMY VARCHAR2(1)

SQL> select * from dual;
D
-
X

SQL> select user from dual;

USER
------------------------------
SYSTEM

SQL> select 12*12 from dual;

12*12
----------
144

2 对 “dual表相关”的想法;

  1. 该表只有一行一列,其实该表和系统中的其他表一样,一样可以执行插入、更新、删除操作,还可以执行drop操作。但是不要去执行drop表的操作,否则会使系统不能用,数据库起不了,会报Database startup crashes with ORA-1092错误。此时也不要慌乱,可以通过执行以下步骤来进行恢复。可以用sys用户登陆。
    SQL> create pfile=’d:pfile.bak’ from spfile
      SQL> shutdown immediate
      在d:pfile.bak文件中最后加入一条:
      replication_dependency_tracking = FALSE
      重新启动数据库:
      SQL> startup pfile=’d:pfile.bak’
      SQL> create table “sys”.”DUAL”
      [an error occurred while processing this directive]

  2. 自己实现dual功能:
    create table mydual( dummy varchar2(1));
    也可以实现和dual 同样的效果:
    select 12*12 from mydual;

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code