您的位置 首页 > 娱乐休闲

了解游标属性和带返回值的游标 oracle存储过程游标的使用

★★★ 游标属性

前面的例子中,使用到了“游标名%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

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何调用oracle游标,如何使用oracle的游标,oracle调用存储过程输出游标,oracle游标的使用详解”边界阅读