存储过程--oracle,sqlserver示例
2017-05-23 17:22
351 查看
oracle版本
sqlserver版本
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;
相关文章推荐
- Oracle 创建及调用存储过程,脚本示例
- 通过存储过程,查询表的相关表字段信息(sqlserver,mysql,oracle)
- SQLServer和Oracle,存储过程区别,常用函数对比
- oracle简单的存储过程以及job示例
- Oracle查询类存储过程调用示例
- oracle的存储过程示例
- mysql,sqlserver,oracle查看所有存储过程,函数,视图,触发器,表
- oracle中带游标的存储过程示例
- SqlServer和Oracle中一些常用的sql语句6 存储过程
- Oracle 创建及调用存储过程,脚本示例
- SQLServer和Oracle,存储过程区别,常用函数对比(二)
- Oracle,SqlServer,DB2存储过程中异常处理
- sql server、db2、oracle 存储过程动态sql语句示例
- sqlserver存储过程中利用游标遍历结果集简单示例及查询数据库时间
- oracle 10g 创建存储过程示例 新
- Oracle,SqlServer,DB2存储过程中异常处理
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- SqlServer和Oracle中一些常用的sql语句6 存储过程
- sqlserver存储过程中动态添加链接服务器示例(存储过程操作其他数据库服务器)
- Oracle自定义函数和存储过程示例,自定义函数与存储过程区别