码迷,mamicode.com
首页 > 数据库 > 详细

PLSQL 过程之间的调用 (实现递归删除目录功能)

时间:2015-09-19 21:15:24      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:

在使用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;

 

这个功能我想用函数也能够实现,但是尝试了几次,在游标遍历的时候老是出错,哎所以还是都用过程了。有兴趣的童鞋可以把使用函数实现递归的方法贴在下面,让我学学咯

 

PLSQL 过程之间的调用 (实现递归删除目录功能)

标签:

原文地址:http://www.cnblogs.com/jyyjava/p/4822130.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!