pl/sql---游标

本文详细介绍了PL/SQL中的游标使用,包括隐式和显式游标,以及各种类型的游标操作,如LOOP、WHILE、FOR循环。通过实例展示了如何用游标显示部门及员工信息、按条件筛选数据、进行动态查询和DML操作,如加薪等。还提到了带参数的游标以及如何根据输入参数决定打印部门还是员工信息。

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

游标

DECLARE
  CURSOR  A IS SELECT EMPNO,ENAME FROM EMP;
  B A%ROWTYPE;
BEGIN
  OPEN A;
  LOOP
    FETCH A INTO B;
    EXIT WHEN  A%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(B.EMPNO||' '||B.ENAME);
    
  END LOOP;
  CLOSE A;
END;   

-----LOOP
/

DECLARE
  CURSOR  A IS SELECT EMPNO,ENAME FROM EMP;
  B A%ROWTYPE;
BEGIN
  OPEN A;
  FETCH A INTO B;
  WHILE A%FOUND LOOP
    
   
    DBMS_OUTPUT.PUT_LINE(B.EMPNO||' '||B.ENAME);
    FETCH A INTO B;
  END LOOP;
  CLOSE A;
END;  

-----WHILE 加一次读取

/
DECLARE
  CURSOR  A IS SELECT EMPNO,ENAME FROM EMP;
  B A%ROWTYPE;

BEGIN

  FOR C IN A LOOP
    DBMS_OUTPUT.PUT_LINE(C.EMPNO||' '||C.ENAME);
  END LOOP;

END;  

-----FOR 省略开启读取和关闭

DECLARE
  CURSOR  A IS SELECT EMPNO,ENAME FROM EMP;
  B A%ROWTYPE;
BEGIN
  OPEN A;
  IF A%ISOPEN THEN           ------%ISOPEN
    DBMS_OUTPUT.PUT_LINE('游标已开启');
  ELSE
    DBMS_OUTPUT.PUT_LINE('游标未开启');
  END IF;
  CLOSE A;
   IF A%ISOPEN THEN 
    DBMS_OUTPUT.PUT_LINE('游标已开启');
  ELSE
    DBMS_OUTPUT.PUT_LINE('游标未开启');
  END IF;
  
END;   
%ISOPEN  查看游标是否开启 

-----隐式游标

DECLARE

BEGIN
  DELETE FROM EMP1 WHERE DEPTNO=10;
  
  DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT);
  COMMIT;
END;
BEGIN
  DML
  INSERT INTO 日志表 VALUES (SQL%ROWCOUNT);
  COMMIT;
END;

/
BEGIN
  FOR A IN (SELECT * FROM EMP1) LOOP
    DBMS_OUTPUT.PUT_LINE(A.EMPNO||A.ENAME||A.SAL||A.JOB);
  END LOOP;
END;

---动态游标
DECLARE
  TYPE AAA IS REF CURSOR;
  CUR_A AAA;
  E   EMP%ROWTYPE;
  D   DEPT%ROWTYPE;
BEGIN
  OPEN CUR_A FOR SELECT * FROM EMP;
  LOOP
    FETCH CUR_A INTO E;
    EXIT WHEN CUR_A%NOTFOUND;
    DBMS_OUTPUT.put_line(E.ENAME);
  END LOOP;
  
  CLOSE CUR_A;
  
END;

------------ERROR


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值