--cursor cur if cur%rowcount = 0 then --记录为0 else --有记录 end if;
当游标不 fetch,%ROWCOUNT 属性就一直是 0,所以根据这个判断是没有用的
那你fetch一下,判断有没数据不就知道你想要结果了
一般都是先Fetch一下,执行完Fetch的操作后,再利用%NOTFOUND 判断是否有数据: IF cur_a%NOTFOUND THEN --表示Cursor中没有数据;如果楼主想不执行Fetch就判断Cursor是否有数据的话,只能先select count(*) into vn_cnt where (把Cursor的所有条件都加上),判断vn_cnt是否=0喽。因为对于Cursor来说,只Open,不Fetch的时候,Cursor是不会知道到底有多少数据的。
if cur%rowcount = 0 then
--记录为0
else
--有记录
end if;
当游标不 fetch,%ROWCOUNT 属性就一直是 0,所以根据这个判断是没有用的
一般都是先Fetch一下,执行完Fetch的操作后,再利用%NOTFOUND 判断是否有数据:
IF cur_a%NOTFOUND THEN --表示Cursor中没有数据;如果楼主想不执行Fetch就判断Cursor是否有数据的话,只能先select count(*) into vn_cnt where (把Cursor的所有条件都加上),判断vn_cnt是否=0喽。因为对于Cursor来说,只Open,不Fetch的时候,Cursor是不会知道到底有多少数据的。
%FOUND 只有在DML语句影响一行或多行时%FOUND属性才返回true,当返回为NULL值时,则为false.
%NOTFOUND与%FOUND相反,当没有影响到一行时%NOTFOUND属性返回false,当DML语句影响一行或多行时,则返回false.
%ROWCOUNT返回DML语句影响的行数.如果DML语句没有影响任何行,则返回0.
%ISOPEN %ISOPEN返回游标是否已打开的值,在执行SQL语句之后,Oracle自动关闭游标,所以隐式游标的%ISOPEN属性始终为false.
隐式游标属性的使用:
SQL%隐式游标的属性