显示游标的使用详解(二)
实,我们还是可以往下FETCH而没有异常抛出 www.2cto.com
㈣ 显示游标中的列别名
有两个地方需要涉及到列别名
● 把数据提取到用该游标的%ROWTYPE属性声明的记录中
● 我们想在程序中使用该列
比如:
DECLARE
CURSOR cur IS SELECT SUM(salary) total_sum FROM ...;
think_cur cur%ROWTYPE;
BEGIN
OPEN cur;
FETCH cur INTO think_cur;
或者
IF think_cur.total_sum THEN ...
㈤ 关闭显示游标
当用完一个游标后,我们一定要确保关闭这个游标
语法:
CLOSE cursor_name;
对于包级别的游标,一旦我们使用完毕,就要立即跟上一个CLOSE语句,这一点尤为重要! www.2cto.com
比如:
BEGIN
OPEN my_package.cursor_name;
...
...
CLOSE my_package.cursor_name;
EXCEPTION
WHEN OTHERS
THEN
IF my_package.cursor_name%ISOPEN
THEN
CLOSE my_package.cursor_name;
END IF;
END;
我们只能关闭当前处于打开状态的游标,可借助%ISOPEN判断:
IF cursor_name%ISOPEN
THEN
CLOSE cursor_name;
END IF;
如果我们打开的游标超过会话级别设定的数量(OPEN_CUSSORS),则会抛出:
ORA-01000:maximum open cursors exceeded
如果遇到这个异常,Think认为,应首先定位到,包级别游标的使用情况