怎样判断CURSOR为空?

liudj 2010-09-20 06:17:56
检索一组数据,定义一个Cursor,
Cursor打开后,如何判断Cursor是否为空?
...全文
1249 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
minitoy 2010-09-26
  • 打赏
  • 举报
回复
奇怪,代码怎么怪怪的,没语法着色了.
SQL> set serveroutput on
SQL>
SQL> declare
2 cv_c sys_refcursor;
3 zero_row_in_cursor EXCEPTION;
4
5 begin
6 open cv_c for select 1 from dual where 1=0;
7 dbms_output.put_line(cv_c%rowcount);
8 if cv_c%rowcount=0 then
9 close cv_c;
10 RAISE zero_row_in_cursor;
11 end if;
12 exception
13 when zero_row_in_cursor then
14 rollback;
15 dbms_output.put_line('error,zero row find in cursor');
16 end;
17 /

0
error,zero row find in cursor

PL/SQL procedure successfully completed

SQL>
minitoy 2010-09-26
  • 打赏
  • 举报
回复
SQL> set serveroutput on
SQL>
SQL> declare
2 cv_c sys_refcursor;
3 zero_row_in_cursor EXCEPTION;
4
5 begin
6 open cv_c for select 1 from dual where 1=0;
7 dbms_output.put_line(cv_c%rowcount);
8 if cv_c%rowcount=0 then
9 close cv_c;
10 RAISE zero_row_in_cursor;
11 end if;
12 exception
13 when zero_row_in_cursor then
14 rollback;
15 dbms_output.put_line('error,zero row find in cursor');
16 end;
17 /

0
error,zero row find in cursor

PL/SQL procedure successfully completed

SQL>
liudj 2010-09-26
  • 打赏
  • 举报
回复
谢谢各位,可能是我没有描述清楚。

我的意思是,定义一个CURSOR,处理时,如果Cursor内的ROWCOUNT为0件,抛出Warning信息,转向异常。
RowCount非空时,正常处理后面业务。
minitoy 2010-09-25
  • 打赏
  • 举报
回复
SQL> set serveroutput on
SQL>
SQL> declare
2 cv_c sys_refcursor;
3 begin
4 open cv_c for select 1 from dual where 1=0;
5 dbms_output.put_line(cv_c%rowcount);
6 close cv_c;
7 end;
8 /

0

PL/SQL procedure successfully completed

SQL>
心中的彩虹 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 liudj 的回复:]
检索一组数据,定义一个Cursor,
Cursor打开后,如何判断Cursor是否为空?
[/Quote]

--一个游标操作的模版


declare
v_name varchar2(10);
cursor cur is select name from tb;
begin
open cur;
fetch cur into v_name ;
while cursor%found loop
dbms_output.put_line(v_name);
fetch cur into v_name;
end loop;
close cur;
end;



siriusraider 2010-09-21
  • 打赏
  • 举报
回复
cursor%notfound
kpkero 2010-09-21
  • 打赏
  • 举报
回复
notfound
ngx20080110 2010-09-21
  • 打赏
  • 举报
回复

DECLARE
CURSOR your_cursor IS SELECT first_name || ' ' || last_name FROM employees WHERE salary > 10000;
fn VARCHAR2(30);
BEGIN
OPEN your_cursor;
LOOP
FETCH your_cursor INTO fn;
EXIT WHEN your_cursor%notfound;

DBMS_OUTPUT.PUT_LINE(fn);
END LOOP;
CLOSE your_cursor;
END;

-- 结果
Neena Kochhar
Lex De Haan
  • 打赏
  • 举报
回复
--给个例子
declare
cursor emp_cur is select empno,ename,sal from emp for update;
emp_row emp_cur%rowtype;
begin
open emp_cur;
loop
fetch emp_cur into emp_row;
exit when emp_cur%notfound;
if emp_row.sal<2000 then
--使用current of emp_cur时一定要for update;
update emp set sal=sal*1.1 where current of emp_cur;
end if;
end loop;
close emp_cur;
end;
sinpoal 2010-09-21
  • 打赏
  • 举报
回复

loop
fetch cursor_name into recor_type_date ;
exit when cursor_name%notfound;
end loop;
Diza1986 2010-09-21
  • 打赏
  • 举报
回复
%ROWCOUNT 整型 获得FETCH语句返回的数据行数
%FOUND 布尔型 最近的FETCH语句返回一行数据则为真,否则为假
%NOTFOUND 布尔型 与%FOUND属性返回值相反
%ISOPEN 布尔型 游标已经打开时值为真,否则为假
jonsoncheng 2010-09-20
  • 打赏
  • 举报
回复
学习了!@@@
gelyon 2010-09-20
  • 打赏
  • 举报
回复
if
cursor%notfound 
then
...
end if;
源码下载地址: https://pan.quark.cn/s/7a349ad53637 在地理信息系统(GIS)领域中,土地利用现状图被视为一种核心的数据可视化手段,其主要功能在于呈现特定区域的土地使用格局,涵盖农业、住宅、工业、绿地等多样化的土地利用类型。此类信息对于城市规划、环境分析、土地监管以及决策制定具有基础性作用。在编制土地利用现状图的过程中,符号库的构建与样式匹配环节是保障地图具备清晰度、精确性及视觉美感的核心步骤。所谓"样式匹配",是一种技术手段,旨在让用户能够将特定的符号或视觉样式与地图中的数据要素建立关联。在本资源中,提及的"样式匹配lyr"文件或许是一个ArcGIS(一种广受欢迎的GIS软件)所使用的图层样式文件,该文件内含了预设的图例符号及使用规范,用以区分不同的土地利用类别。用户若将此lyr文件导入至个人项目中,便能够迅速为土地利用现状图层赋予统一且专业的视觉表现。符号库则是指存储各类图形符号的集合,这些符号在地图上代表了不同的地理要素。对于土地利用现状图而言,每一类土地通常都会对应一个特定的符号,比如农田可能以绿色填充图案来表现,而建筑用地则可能采用灰色的实心形状。这些符号库对于统一地图的视觉呈现至关重要,有助于观者迅速把握地图所传递的信息。在ArcGIS软件中,用户能够通过"图层属性"界面来调控图层的视觉样式。在该界面中,用户可以选择"符号"面板来设定数据的可视化方式,或选择"标签"面板来管理要素的标注规则。借助"加载样式"功能,用户可以将"样式匹配lyr"文件中的样式规则应用到当前图层,以此规避逐一对每个土地利用类型进行符号的手动配置。不仅如此,为了达成卓越的可视化效果,可能还需对其他图层属性进行微调,例如调节透明度、设置比例尺依赖...

17,135

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧