Oracle存储过程中多层嵌套游标的用法


 
Oracle sql脚本代码  
CREATE OR REPLACE  
PROCEDURE P_DELETE_QK (pId in NUMBER, deep in NUMBER) AS  
-- pId = 分类ID  deep = 深度,层级  
one_val NUMBER;  
two_val NUMBER;  
three_val NUMBER;  
cursor var_one is select "ID" from T_QK where PARENTID = pId;  
cursor var_two is select "ID" from T_QK where PARENTID = one_val;  
cursor var_three is  select "ID" from T_WZ where QKID = two_val;  
BEGIN     
    IF deep = 0 THEN  
        for oneID in var_one LOOP         
            one_val:= oneID."ID";  
        for twoID in var_two LOOP     
            two_val:= twoID."ID";  
        --删除与文章关联表  
        for threeID in var_three LOOP  
            three_val:= threeID."ID";  
            delete from Q_BROWSE where WZID = three_val;--浏览量     
            delete from Q_ATTENTION where WZID = three_val;--关注量  
            delete from T_COMMENT where WZID = three_val;--评论  
              
        END LOOP;  
            --删除这个分类下的所有文章  
            delete from T_WZ where QKID = two_val;  
            --删除三级分类  
            delete from T_QK where "ID" = two_val;  
        END LOOP;  
            --删除二级分类  
            delete from T_QK where "ID" = one_val;    
        END LOOP;  
        --删除期刊期数  
        delete from T_QKQS where QKID = pId;  
        --删除 下载量  
        delete from Q_DOWNLOAD where QKID = pId;      
        --删除本身  
        delete from T_QK where "ID" = pId;  
    END IF;  
  
    IF deep = 1 THEN  
        for twoID in var_one LOOP                     
            two_val:= twoID."ID";  
            for threeID in var_three LOOP     
                three_val:= threeID."ID";  
                delete from Q_BROWSE where WZID = three_val;--浏览量     
                delete from Q_ATTENTION where WZID = three_val;--关注量  
                delete from T_COMMENT where WZID = three_val;--评论  
            END LOOP;     
            --删除这个分类下的所有文章  
            delete from T_WZ where QKID = two_val;  
            --删除三级分类  
            delete from T_QK where "ID" = two_val;                
        END LOOP;  
        --删除二级分类  
        delete from T_QK where "ID" = pId;        
    END IF;  
  
    IF deep = 2 THEN          
        two_val:= pId;  
        --删除与文章关联表  
        for threeID in var_three LOOP  
            three_val:= threeID."ID";     
            delete from Q_BROWSE where WZID = three_val;--浏览量     
            delete from Q_ATTENTION where WZID = three_val;--关注量  
            delete from T_COMMENT where WZID = three_val;--评论  
        END LOOP;     
        --删除这个分类下的所有文章  
        delete from T_WZ where QKID = pId;  
        --删除三级分类  
        delete from T_QK where "ID" = pId;            
    END IF;  
END;  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值