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,为什么?是我错还是上面代码中红色部分错?
解决方案 »
- 在linux如何用C调用oracle以数组作为参数的存储过程,谢谢!
- ORACLE导数据的问题
- Pl/sql问题 急
- 一個遞歸函數出錯,希望大家幫忙看一下
- oralce中如何查询在date类型数据中增加一个时间值后的时间?
- 如何连接非本地的Oracle??
- 我用REPORT生成PDF文件,可为什么其中的汉字都是乱码呢?
- 一条分页的SQL语句
- 这个SQL简单吗?高手请进
- 请问高手,有啥办法一次性把一批数据导入ORACLE 9数据库
- 求一个录入了中国城市之间距离的数据库
- 我们单位想请人在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了啊呵呵 两者都没错