oracle execute immediate('select 1/0 from dual') 的有关问题
发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
oracle execute immediate('select 1/0 from dual') 的问题
现象
1、select 1/0 from dual;
oracle会报除数为0的错误
2、
begin
execute immediate('select 1/0 from dual');
end;
oracle不报错
3、
begin
execute immediate('insert into test8 select 1/0 from dual');
end;
会报除数为0的错误
问题:为什么第二条语句不报错
------解决思路----------------------
你可以试试 execute immediate v_sql into 的用法应该就报错了
由于按你这种写法,无需返回结果,oracle应该是自己进行了优化,判断select子句不需要执行吧
没做过测试,个人猜想
------解决思路----------------------
2、
begin
execute immediate('select 1/0 from dual');
end;
oracle不报错
一般情况要select 后要有into的没有into字句就没有意思,但是跟踪一下sql执行发现sql可以正常解析
begin
execute immediate 'select 1/0 from dual';
end;
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 1
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.00 0.00 0 0 0 1
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: SYS
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
SQL*Net message to client 1 0.00 0.00
SQL*Net message from client 1 16.03 16.03
********************************************************************************
SQL ID: 360pfbbv2s5hg
Plan Hash: 1388734953
select 1/0
from
dual
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.00 0.00 0 0 0 0
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: SYS (recursive depth: 1)
Rows Row Source Operation
------- ---------------------------------------------------
0 FAST DUAL (cr=0 pr=0 pw=0 time=0 us cost=2 size=0 card=1)
发现Fetch 为0,猜测除数为0的错误应该在fetch报出来的
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
基于MATLAB实现的云模型计算隶属度
”云”或者’云滴‘是云模型的基本单元,所谓云是指在其论域上的一个分布...
-
在linux上安装oracle11G必须在图形界面才能安装吗?纯命令行下,安装linux时没有安装图形界面!
安装了redhat 6.3系统,但是安装系统是...
-
请教 primary key 使用 Varchar2 与 Char 差别有人知道吗 ?
从以前就有这个疑问,但碍于开 Table 的 KEY通常几乎都是有规则的,且固...
-
关于外键的建立问题
比如说我建立下面两个表
create table user(
id bigint(10) premary key auto_increment,
username varch...
-
PLSQL 新电脑装了 11g, 开启后找不到可以连接的资料库清单><?
旧电脑 Oracle Client → C:Oracle,这个我直接开 Pl/SQL 再登入帐...
-
我在aix 5.3 上创建oracle10g监听报错
Configuring Listener:LISTENER
ServiceAliasException: Could not save Service Alias: ...
-
ORACLE update 问题 新手求解答
有三张表A B C
B表的部分数据 复制给A
B表跟C表降序排列后假设他是一一对应的关系
现在想把...
-
存储过程执行报无效数字
存储过程
CREATE OR REPLACE PROCEDURE UpdatePiecesChn(pieceidStr in varchar2,
...
-
CE_现金银行总行分行设定详解(案例)
2014-07-14 Created By BaoXinjian
一、摘要
1. 设定银行总行
设定银行总行基本资料
设定银...
-
一个简单的报错,麻烦看看
函数如下,提示报错行 是: return str1;我实在搞不懂,麻烦指教一下
create or replace function qdn_lks_fi...