oracle 游标操作 怎么判断SQL语句是否查出数据 20
如下是部分代码(c为显示的游标,param1为参数):sql:='select*fromtable_namewhereno=:p1';opencforusingparam...
如下是部分代码(c为显示的游标,param1为参数):
sql :='select * from table_name where no = :p1';
open c for using param1;
if c%rowcount > 0 then
--处理代码
else
--处理代码
end if;
我在PLSQL里面测试的时候,不管没有有查出数据,永远都是执行else里面的,求解释 展开
sql :='select * from table_name where no = :p1';
open c for using param1;
if c%rowcount > 0 then
--处理代码
else
--处理代码
end if;
我在PLSQL里面测试的时候,不管没有有查出数据,永远都是执行else里面的,求解释 展开
6个回答
展开全部
%rowcount
这个是来返回你刚刚的DML语句影响的多少行,select 属于DQL语句
像你这种应该用%found
sql :='select * from table_name where no = :p1';
open c for using param1;
if c%found then
--如果游标的结果集有记录执行
else
--处理代码
end if;
%notfound和%found 是刚刚相反的
这个是来返回你刚刚的DML语句影响的多少行,select 属于DQL语句
像你这种应该用%found
sql :='select * from table_name where no = :p1';
open c for using param1;
if c%found then
--如果游标的结果集有记录执行
else
--处理代码
end if;
%notfound和%found 是刚刚相反的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c%NOTFOUND
这个就是没有数据!~~~
--这是我代码的例子 你可以参照一下
IF SUB0010_CUR11%NOTFOUND THEN
CLOSE SUB0010_CUR11;
GOTO SUB0010_190;
END IF;
这个就是没有数据!~~~
--这是我代码的例子 你可以参照一下
IF SUB0010_CUR11%NOTFOUND THEN
CLOSE SUB0010_CUR11;
GOTO SUB0010_190;
END IF;
更多追问追答
追问
还是有问题,永远不会执行到if判断里面、按照我自己的理解,这个查询语句 select * from table_name where no = ? 无论怎么执行,都会存在一个结果,就算where条件不成立,也会有一个什么也没查到(无数据)的结果、我觉得用notfound判断好像有问题、
追答
你执行sql的代码贴出来看看呗?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用SQLSTATE来判断
如果sqlstate = '02000',那就肯定为空
如果sqlstate = '02000',那就肯定为空
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-11-24
展开全部
sql%notfound
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询