★★★ 游标属性
前面的例子中,使用到了“游标名%NOTFO∪ND'',%NOTFOUND” 是一个游标属性,oracle中,游标有四大属性:
1. %FOUND
在一个结果集中,游标FETCH 数据成功,则%FOUND 属性返回TRUE。如果一个结果集中没有任何记录,则%FOUND 返回FALSE。
2. %NOTFOUND
%NOTFOUND 属性与%FOUND 相反,如果一个结果集中没有返回任何结果,则返回TRUE,当游标指向结果集中最后一条记录,并且无法成功FETCH 数据,则返回TRUE,其他的都返回FALSE 。
3, %ROWCOUNT
返回在结果集中,游标提取的行数。%ROWCOUNT为整数值属性。在第一次获取之前,%ROWCOUNT 为零。每FETCH 成功一次,该属性加1。
4. %ISOPEN
如果当前游标已经打开,返回TRUE,否则返回FALSE。
★★★ 带返回值的游标
游标定义时,可以为游标指定一个返回类型。在结果集中如果存在若干列,使用一个自定义类型把所有返回结果进行封装,可以便程序设计变得方便。
代码演示:为游标指定一个返回参数
DECLARE
addsal INT: =100;
TYPE emp_ty IS RECORD (
EMPNO COMM NUMBER(4) ,
ENAME VARCHAR2(10)′
JOB VARCHAR2(9),
SAL NUM BER(7,2),
COMM NUMBER(7,2) ); ①
myemp emp_ty; ②
num INT:=1;
CURSOR emp_cur RETURN emp_ty IS
SELECT empno,ename,job,sal,comm FROM emp ORDER BY sal: ③
BEGIN
OPEN emp_cur:
LOOP
FETCH emp_CURINTO myemp; ④
EXIT WHEN emp_CUR%NOTFOUND;
addsal:=ROUND(addsal+addsal*0.5);
IF num=t THEN
addsal:=100;
END IF;
num:=num+1;
UPDATE emp SET comm:NvL(comm,0)+addsal
WHEREename=myemp.ename; ⑤
END LOOP;
dbm(’工资已经递增更新: l l emp_cur%RowcouNt l l’人’);
CLOSE.emp_cur;
代码解析:
① 定义一个类型emp_ty,该类型与游标查询语句的返回结果的列一致,因此可以再③处作为游标的返回类型。
② 为自定义类型emp_ty 定义一个变量。
③ 游标的SELECT 语句返回的列与自定义类型emp_ty 中的成员对应一致,因此emp_ty 可以作为游标的返回类型。游标提取一行数据可以直接INTO 到emp_ty 类型变量中比如④处。
④ 游标提取一行数据可以直接INTO 到emp_ty 类型变量。
⑤ 使用’”变量名.属性” 访问属性。
赢在团队,开发路上,你不是一个人在前进!分享来自兆隆IT云学院,QQ:598756835