PL / SQL游标-3

本文深入探讨了PL/SQL中游标的使用方法,包括FOR UPDATE CURSOR、PARAMETARISEDCURSOR以及在游标内使用游标的示例。通过具体代码展示了如何更新记录、传递参数以及进行复杂的查询操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

示例示例显示FOR UPDATE CURSOR

-------------------------------------------------- ---------------------------


DECLARE
CURSOR EMPREC IS SELECT * FROM EMP FOR UPDATE OF SAL;
MYREC EMPREC%ROWTYPE;
NUM NUMBER(4);
BEGIN
OPEN EMPREC;
LOOP
FETCH EMPREC INTO MYREC;
EXIT WHEN EMPREC%NOTFOUND;
NUM:=EMPREC%ROWCOUNT;
UPDATE EMP SET SAL=4000 WHERE CURRENT OF EMPREC;
END LOOP;
CLOSE EMPREC;
DBMS_OUTPUT.PUT_LINE(NUM ||'   RECORDS UPDATED');
END; 
显示PARAMETARISED CURSOR的示例示例

-------------------------------------------------- ---------------------------------


DECLARE
RR EMP%ROWTYPE;
CURSOR C1 (MDEPTNO NUMBER,MJOB VARCHAR) IS 
SELECT * FROM EMP WHERE DEPTNO=MDEPTNO AND JOB=MJOB;
BEGIN
OPEN C1(20,'CLERK');
LOOP
FETCH C1 INTO RR;
EXIT WHEN C1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(RR.ENAME);
END LOOP;
CLOSE C1;
END; 
参数可以传递给游标

因此,游标在某种程度上类似于IN模式过程。

在打开游标时传递参数。

样例程序显示在光标内使用光标

================================================== ==


declare
cursor c1 is select deptno from dept order by deptno;
cursor c2 (mm dept.deptno%type) is select ename from emp where deptno=mm;
begin
for mrec in c1 loop
for mrec1 in c2(mrec.deptno) loop
dbms_output.put_line(mrec1.ename);
end loop;
end loop;
end; 

同时检查

PL / SQL游标-4

From: https://bytes.com/topic/oracle/insights/741694-pl-sql-cursor-3-a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值