使用cursor表达式嵌套游标

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tanzugan/article/details/81194022

    --使用cursor表达式 获取下级的信息
    DECLARE 
      TYPE REFCURSOR IS REF CURSOR;--定义游标
      CURSOR PARENT_CURSOR(V_ORGAN_NO VARCHAR2) IS--定义嵌套游标
         SELECT O.ORGAN_NAME,CURSOR(SELECT SO.ORGAN_NO,SO.ORGAN_NAME FROM SM_ORGAN_TB SO WHERE SO.PARENT_ORGAN = O.ORGAN_NO) 
           FROM SM_ORGAN_TB O WHERE O.ORGAN_NO = V_ORGAN_NO;
      ORGAN_CURSOR REFCURSOR;
      V_PARENT_NAME SM_ORGAN_TB.ORGAN_NAME%TYPE; --定义上级变量
      V_ORGAN_NO SM_ORGAN_TB.ORGAN_NO%TYPE;--下级号
      V_ORGAN_NAME SM_ORGAN_TB.ORGAN_NAME%TYPE;--下级名
     BEGIN
       OPEN PARENT_CURSOR(&V_ORGAN_NO);--打开游标
      LOOP--外循环求本级
       FETCH PARENT_CURSOR INTO V_PARENT_NAME ,ORGAN_CURSOR;
       EXIT WHEN PARENT_CURSOR%NOTFOUND;
       DBMS_OUTPUT.PUT_LINE('上级机构:'||V_PARENT_NAME);
       LOOP--内循环求下级
         FETCH ORGAN_CURSOR INTO V_ORGAN_NO,V_ORGAN_NAME;
         EXIT WHEN ORGAN_CURSOR%NOTFOUND;
         DBMS_OUTPUT.PUT_LINE('机构号:'||V_ORGAN_NO||'--机构名:'||V_ORGAN_NAME);
         END LOOP;
       END LOOP;
       CLOSE PARENT_CURSOR;--关闭游标
   END;

展开阅读全文

没有更多推荐了,返回首页