[PL/SQL] CURSOR例子

CREATE OR REPLACE PROCEDURE EXPCURSOR_TEST
(
    V_DEPTNO IN DEPT.DEPTNO%TYPE
) 
IS
    -- 声明CURSOR
    CURSOR DEPT_AVG IS
    SELECT B.DNAME                  AS DNAME
         , COUNT(A.EMPNO)           AS EMPCNT
         , ROUND(AVG(A.SAL), 3)     AS SAL       
      FROM EMP A, DEPT B
     WHERE A.DEPTNO = B.DEPTNO
       AND B.DEPTNO = V_DEPTNO
  GROUP BY B.DNAME;
     
    -- FETCH VARABLE
    V_DNAME DEPT.DNAME%TYPE;
    V_EMPCNT NUMBER;
    V_SAL NUMBER;
    
BEGIN
    -- CURSOR OPEN
    OPEN DEPT_AVG;
    
    -- CURSOR FETCH
    FETCH DEPT_AVG INTO V_DNAME, V_EMPCNT, V_SAL;
    
    DBMS_OUTPUT.PUT_LINE('部门:' || V_DNAME);
    DBMS_OUTPUT.PUT_LINE('员工数:' || V_EMPCNT);
    DBMS_OUTPUT.PUT_LINE('平均工资:' || V_SAL);
    
    --CLOSE CURSOR
    CLOSE DEPT_AVG;
    
    EXCEPTION         
      WHEN OTHERS THEN
           DBMS_OUTPUT.PUT_LINE('ERR CODE : ' || TO_CHAR(SQLCODE));
           DBMS_OUTPUT.PUT_LINE('ERR MESSAGE : ' || SQLERRM); 
END EXPCURSOR_TEST;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值