--使用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;
使用cursor表达式嵌套游标
最新推荐文章于 2024-08-23 13:28:09 发布