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,为什么?是我错还是上面代码中红色部分错?
解决方案 »
- 高分求助:如何向数据库中更快速的插入txt数据
- 求助:因主机名更改造成oracle10g 登录时报错:ora-12545问题的解决方案
- 网络通信的储存过程
- 求救了!!!一个让人头疼的查询检索问题
- 一个难以解决的sql问题
- 奇怪的预处理语句问题?
- 由SqlServer数据库设计到Oracle数据库设计的困惑!请大家务必帮忙!!
- 在线等待,关于函数!!!!
- 菜鸟问题。关闭数据库时,无任何反应。
- 求指导,查询优化方法
- 求一个录入了中国城市之间距离的数据库
- 我们单位想请人在Oracle平台下,帮我们做一个C/S结构与B/S结构相结合的数据库,我不太懂,不知道这样说对不对,刚才让各位高手笑话了,真的很惭愧!!!
我在论坛上看到上面一段代码,我照着在自己机器上运行,
可得到的COUNT(*)是1,为什么?是我错还是上面代码中红色部分错?
DUAL就是个一行一列的表,如果你往里执行insert、delete、truncate操作,就会导致很多程序出问题。结果也因sql*plus、pl/sql dev等工具而异。查询行数
--在创建数据库之后,DUAL表中便已经被插入了一条记录。个人认为:DUMMY字段的值并没有什么关系,重要的是DUAL表中的记录数
SQL> select count(*) from dual;
COUNT(*)
----------
1SQL> select * from dual;
DUMMY
-----
X--插入数据,再查询记录,只返回一行记录
SQL> insert into dual values (''Y'');
1 row created.
SQL> commit;
Commit complete.
SQL> insert into dual values (''X'');
1 row created.
SQL> insert into dual values (''Z'');
1 row created.
SQL> commit;
Commit complete.
SQL> select count(*) from dual;
COUNT(*)
----------
4
SQL> select * from dual;
DUMMY
-----
X/*
--假我们插入一条数据,DUAL表不是返回一行,而是多行记录,那会是什么结果呢?
SQL> insert into dual values(''Y'');
1 行 已插入
SQL> commit;
提交完成
SQL> select * from dual;
DUMMY
-----
X
Y
SQL> select sysdate from dual;
SYSDATE
-----------
2004-12-15
2004-12-15这个时候返回的是两条记录,这样同样会引起问题。在通过使用
select sysdate into v_sysdate from dual;
来获取时间或者其他信息的存储过程来说,ORACLE会抛出TOO_MANY_ROWS(ORA-01422)异常。
因此,需要保证在DUAL表内有且仅有一条记录。当然,也不能把DUAL表的UPDATE,INSERT,DELETE权限随意释放出去,这样对于系统是很危险的
*/
Oracle Dual 表详解
http://blog.csdn.net/tianlesoftware/archive/2009/11/03/4764326.aspx
也是因为往dual表中插入多条数据后,出现了些问题。
当你在删除表时,提示“非递归性的SQL错误”.
后来查资料才知道是:dual表中有多条记录。
还有:insert into dual values(1);
....
insert into dual values(100);
此时,使用 delete from dual 。只能删掉一条语句。
更不要对不知道的表乱来
否则在工作中会狠狠麻烦滴
select count(*) from dual;结果为0
而你插入一条所以就为1而不是2了啊呵呵 两者都没错