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里面的,求解释
展开
 我来答
badkano
推荐于2018-03-28 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885369
团长

向TA提问 私信TA
展开全部

判断sql语句是否查出数据不用游标操作,只需要判断运行的sql结果的行数是否为0,如果为0,则无数据,如果非0,则有数据。

示例代码如下:

declare
v_count int;--定义变量
begin
  select count(*) into v_count from test;--取出表中数据导变量
  if v_count=0 --判断有无数据
    then dbms_output.put_line('表中无数据');
    else 
      dbms_output.put_line('表中有数据,数据条数为'||v_count);
  end if;
end;

运行结果:

帐号已注销
2011-12-03 · TA获得超过315个赞
知道小有建树答主
回答量:225
采纳率:0%
帮助的人:251万
展开全部
%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 是刚刚相反的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dl_会飞的青蛙
2011-11-24 · TA获得超过2456个赞
知道大有可为答主
回答量:3294
采纳率:0%
帮助的人:3382万
展开全部
c%NOTFOUND
这个就是没有数据!~~~

--这是我代码的例子 你可以参照一下
IF SUB0010_CUR11%NOTFOUND THEN
CLOSE SUB0010_CUR11;
GOTO SUB0010_190;
END IF;
更多追问追答
追问
还是有问题,永远不会执行到if判断里面、按照我自己的理解,这个查询语句 select * from table_name where no = ?  无论怎么执行,都会存在一个结果,就算where条件不成立,也会有一个什么也没查到(无数据)的结果、我觉得用notfound判断好像有问题、
追答
你执行sql的代码贴出来看看呗?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flyingFish211
2011-11-24 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
可以用SQLSTATE来判断
如果sqlstate = '02000',那就肯定为空
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-11-24
展开全部
sql%notfound
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式