oracle sqlserver 存储过程,存储过程--oracle,sqlserver示例

oracle版本

create or replace procedure test_procedure_002

as

childTempId varchar(200) ;

parentId varchar(200) ;

topParentId varchar(200) ;

CURSOR l_c1 is select id,menuparentset,menu_level,menuidstringset from oa_custmenu where menucodeset='contacts_menu';

CURSOR l_c2 is select id,menuparentset,menu_level,menuidstringset from oa_custmenu where menucodeset='workmanager_linkman';

CURSOR l_c3 is select id,menuparentset,menu_level,menuidstringset from oa_custmenu where menuparentset=( select id from oa_custmenu where menucodeset='workmanager_linkman' );

Begin

-- 更新 workmanager_linkman

FOR i IN l_c2 LOOP

dbms_output.put_line(i.id||' '||i.menuparentset||' '||i.menu_level);

parentId := i.id ;

FOR j IN l_c1 LOOP

topParentId := j.id ;

dbms_output.put_line( '0-' || j.id || '-' || i.id );

childTempId := '0-' || j.id || '-' || i.id ;

update oa_custmenu set menu_level = childTempId , menuidstringset =childTempId where id=i.id ;

END LOOP;

END LOOP;

dbms_output.put_line('parentId-->'||parentId||';topParentId---->'||topParentId);

-- 更新workmanager_linkman的子目录

FOR i IN l_c3 LOOP

childTempId := '0-' || topParentId || '-' || parentId || '-' || i.id ;

dbms_output.put_line(childTempId);

update oa_custmenu set menu_level=childTempId ,menuidstringset=childTempId where id=i.id ;

END LOOP ;

End;

sqlserver版本

create proc test_procedure_002

as

declare @childTempId varchar(200) ;

declare @parentId varchar(200) ;

declare @topParentId varchar(200) ;

declare @idTemp varchar(200) ;

declare @menuparentsetTemp varchar(200) ;

declare @menu_levelTemp varchar(200) ;

declare @menuidstringsetTemp varchar(200) ;

Declare l_c1 CURSOR FOR select id,menuparentset,menu_level,menuidstringset from oa_custmenu where menucodeset='contacts_menu';

Declare l_c2 CURSOR FOR select id,menuparentset,menu_level,menuidstringset from oa_custmenu where menucodeset='workmanager_linkman';

Declare l_c3 CURSOR FOR select id,menuparentset,menu_level,menuidstringset from oa_custmenu where menuparentset=( select id from oa_custmenu where menucodeset='workmanager_linkman' );

Begin

-- 更新 workmanager_linkman

open l_c1 ;

open l_c2 ;

open l_c3 ;

-- 遍历游标 1

fetch next from l_c2 into @idTemp,@menuparentsetTemp,@menu_levelTemp,@menuidstringsetTemp

-- while (@@fetch_status=0)

--begin

set @parentId = @idTemp ;

print '@parentId------>'+@parentId;

--fetch next from l_c1 into @idTemp,@menuparentsetTemp,@menu_levelTemp,@menuidstringsetTemp

--end

close l_c2 ;

DEALLOCATE l_c2 ;

-- 遍历游标 2

fetch next from l_c1 into @idTemp,@menuparentsetTemp,@menu_levelTemp,@menuidstringsetTemp

--while (@@fetch_status=0)

--begin

print '22222---->'+@parentId ;

set @topParentId = @idTemp ;

set @childTempId = '0-' + @topParentId + '-' + @parentId ;

update oa_custmenu set menu_level = @childTempId , menuidstringset =@childTempId where id=@parentId ;

--fetch next from l_c2 into @idTemp,@menuparentsetTemp,@menu_levelTemp,@menuidstringsetTemp ;

-- end

close l_c1 ;

DEALLOCATE l_c1 ;

-- 遍历游标 3

-- 更新workmanager_linkman的子目录

fetch next from l_c3 into @idTemp,@menuparentsetTemp,@menu_levelTemp,@menuidstringsetTemp

while(@@fetch_status=0)

begin

print '3333' ;

set @childTempId = '0-' + @topParentId + '-' + @parentId + '-' + @idTemp ;

print 'idTemp---->'+@idTemp

update oa_custmenu set menu_level=@childTempId ,menuidstringset=@childTempId where id=@idTemp ;

fetch next from l_c3 into @idTemp,@menuparentsetTemp,@menu_levelTemp,@menuidstringsetTemp

end

close l_c3 ;

DEALLOCATE l_c3 ;

End;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值