标签:
在使用PLSQL 编程中需要用到一些递归的操作,这里使用plsql实现递归删除目录 。和大家分享一下。
--=======================删除 PROCEDURE DEL_POWER(P_ID INTEGER) IS BEGIN UPDATE EX_SYS_POWER A SET A.YXBZ = 0 WHERE A.ID = P_ID; DEL_CHILDREN_POWER(P_ID); --处理异常 EXCEPTION WHEN OTHERS THEN ROLLBACK; END;
--====================删除子节点 PROCEDURE DEL_CHILDREN_POWER(FUNCTION_ID INTEGER) IS IDCOUNT INTEGER; ITEM_COUNT INTEGER; BEGIN FOR ITEM IN (SELECT ID FROM EX_SYS_POWER WHERE PARENT_ID = FUNCTION_ID) LOOP SELECT COUNT(*) INTO IDCOUNT FROM EX_SYS_POWER WHERE PARENT_ID = ITEM.ID; IF IDCOUNT > 0 THEN DEL_POWER(ITEM.ID); END IF; IF IDCOUNT = 0 THEN UPDATE EX_SYS_POWER A SET A.YXBZ = 0 WHERE ID = ITEM.ID; ITEM_COUNT := ITEM_COUNT + 1; END IF; END LOOP; COMMIT; END;
这个功能我想用函数也能够实现,但是尝试了几次,在游标遍历的时候老是出错,哎所以还是都用过程了。有兴趣的童鞋可以把使用函数实现递归的方法贴在下面,让我学学咯
标签:
原文地址:http://www.cnblogs.com/jyyjava/p/4822130.html