SQL> connect sys as sysdba Connected.
SQL> insert into dual values ( 'Y'); 1 row created. SQL> commit; Commit complete. SQL> select count(*) from dual; COUNT(*) ---------- 2
我在论坛上看到上面的这一段代码,上面红色部分就是我疑惑的地方,
我在自己机器上明明得到count(*)为1,
问题:
1:是我错了还是那个红色的地方错了?
2:dual除了select 'aaa',to_date('1990-01-01','yyyy-mm-dd) from dual;之外到底还有什么用常?
SQL> insert into dual values ( 'Y'); 1 row created. SQL> commit; Commit complete. SQL> select count(*) from dual; COUNT(*) ---------- 2
我在论坛上看到上面的这一段代码,上面红色部分就是我疑惑的地方,
我在自己机器上明明得到count(*)为1,
问题:
1:是我错了还是那个红色的地方错了?
2:dual除了select 'aaa',to_date('1990-01-01','yyyy-mm-dd) from dual;之外到底还有什么用常?
select s_seq.nextval into v_seq from dual;其他的自已摸索吧
Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select语句块中。
DUAL是个一行一列的表,DUAL表可以执行插入、更新、删除操作,还可以执行drop操作。但是不要去执行drop表的操作,否则会使系统不能用,数据库起不了,会报Database startup crashes with ORA-1092错误。Oracle Dual 表详解
http://blog.csdn.net/tianlesoftware/archive/2009/11/03/4764326.aspx
Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select语句块中
--查看当前连接用户
SQL> select user from dual;
USER
------------------------------
SYSTEM
--查看当前日期、时间
SQL> select sysdate from dual;
SYSDATE
-----------
2007-1-24 1
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH2
------------------------------
2007-01-24 15:02:47
--当作计算器用
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;
NEXTVAL
----------
1
SQL> select aaa.currval from dual;
CURRVAL
----------
12、关于DUAL表的测试与分析
DUAL就是个一行一列的表,如果你往里执行insert、delete、truncate操作,就会导致很多程序出问题。结果也因sql*plus、pl/sql dev等工具而异。
--查看DUAL是什么OBJECT
--DUAL是属于SYS schema的一个表,然后以PUBLIC SYNONYM的方式供其他数据库USER使用.
SQL> select owner, object_name , object_type from dba_objects where object_name like '%DUAL%';
OWNER OBJECT_NAME OBJECT_TYPE
---------- ----------------- ------------------
SYS DUAL TABLE
PUBLIC DUAL SYNONYM--查看表结构,只有一个字段DUMMY,为VARCHAR2(1)型
SQL> desc dual
Name Type Nullable Default Comments
----- ----------- -------- ------- --------
DUMMY VARCHAR2(1) Y--DUAL表的结构:
create table SYS.DUAL
(
DUMMY VARCHAR2(1)
)
tablespace SYSTEM
pctfree 10
pctused 40
initrans 1
maxtrans 255
storage
(
initial 16K
next 16K
minextents 1
maxextents 505
pctincrease 50
);