/*PL/SQL的显示游标示例*/
DECLARE
CURSOR cur_count IS /*声明游标*/
SELECT city_name,count(*) FROM tb_phone_no
GROUP BY city_name
ORDER BY count(*) desc;
cityName VARCHAR(10);
countNum INTEGER;
BEGIN
OPEN cur_count; /*打开游标*/
FETCH cur_count INTO cityName,countNum; /*从游标中检索数据行*/
WHILE cur_count%FOUND LOOP
/*当前面的FETCH语句至少对应于数据库中的一条记录时,%FOUND属性为TRUE*/
DBMS_OUTPUT.PUT_LINE(cityName || ' ' || countNum);
FETCH cur_count INTO cityName,countNum;
END LOOP;
CLOSE cur_count; /*关闭游标*/
END;
/***********************/
显示声明的游标属性游标名%FOUND 当前面的FETCH语句至少对应于数据库中的一条记录时,%FOUND属性为TRUE
游标名%NOTFOUND 当前面的FETCH语句无法对应数据库中的至少一条记录时,%NOTFOUND属性为TRUE
游标名%ISOPEN 在目标游标打开时,%ISOPEN属性为TURE
游标名%ROWCOUNT 从显示声明的游标中获得的记录行数/************************/
DECLARE
CURSOR cur_count IS /*声明游标*/
SELECT city_name,count(*) FROM tb_phone_no
GROUP BY city_name
ORDER BY count(*) desc;
cityName VARCHAR(10);
countNum INTEGER;
BEGIN
OPEN cur_count; /*打开游标*/
FETCH cur_count INTO cityName,countNum; /*从游标中检索数据行*/
WHILE cur_count%FOUND LOOP
/*当前面的FETCH语句至少对应于数据库中的一条记录时,%FOUND属性为TRUE*/
DBMS_OUTPUT.PUT_LINE(cityName || ' ' || countNum);
FETCH cur_count INTO cityName,countNum;
END LOOP;
CLOSE cur_count; /*关闭游标*/
END;
/***********************/
显示声明的游标属性游标名%FOUND 当前面的FETCH语句至少对应于数据库中的一条记录时,%FOUND属性为TRUE
游标名%NOTFOUND 当前面的FETCH语句无法对应数据库中的至少一条记录时,%NOTFOUND属性为TRUE
游标名%ISOPEN 在目标游标打开时,%ISOPEN属性为TURE
游标名%ROWCOUNT 从显示声明的游标中获得的记录行数/************************/
解决方案 »
- 【请教】UNIXODBC和freeTDS是什么关系?
- oracle的嵌入式SQL
- 两节点的RAC,装了两个实例,其中一个实例sys/system忘了,如何更改?
- ora-03115错误
- 新年好!ORA如何将多条多值查询结果以单行单值逐条返回结果?也就是查询第N条结果
- select 语句
- 一个读取LONG类型的sql错误
- 一个常用的操作怎样作效率最高?(用Procedure)
- 请教:安装ORACLE8.17时,为何总要“重试”?
- 江湖救急
- sum(实际数量),sum(实际数量-损溢)得到值一样,不知哪里出错
- oracle的服务都启动了,为什么连不上oracle服务器?请各位帮帮忙阿!十万火急阿!!!
这是正常的,应为rowcount是在每次fetch后进行增加的,所以不能用着个进行判断。另外不知道你为什么一定要在fetch前判断,说说你的需求,也许有别的方法可以变通
select A into temp_a from B;
open c1;
.....
..
exception
when no_data_found then
--这里处理没有查询到记录的情况.