动态游标存储过程 表名为参数

Posted ZhaoMengmeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态游标存储过程 表名为参数相关的知识,希望对你有一定的参考价值。

 1 Create procedure [dbo].[InsertOriginalCreateName_Vendor]
 2 @TableName nvarchar(50)
 3 as
 4 Begin
 5     declare @UserApplicant nvarchar(50);
 6     declare @CreatedDate datetime;
 7     declare @OriginalDate datetime;
 8     declare @code nvarchar(50);
 9     declare @action nvarchar(50);
10     declare @id nvarchar(50);
11     declare @sql nvarchar(max)
12     set xact_abort on
13         begin tran 
14             set @sql=declare _cur cursor for select id,[External Partner Number] from +@TableName
15             exec (@sql)
16             open _cur
17             fetch next from _cur into @id,@code
18             print @id
19             while (@@fetch_status=0)
20                 begin
21                     begin try 
22                         if exists(select * from vendorheaders where code=@code)
23                         begin 
24                             if exists(select * from vendoritems where vendorheaderid in(select id from vendorheaders where code=@code) and RoleActionId=2)
25                                 begin
26                                     select top 1 @CreatedDate=CreatedDate,@UserApplicant=UserApplicant,@action=RoleActionId from vendoritems where vendorheaderid in(select id from vendorheaders where code=@code) and RoleActionId=2 order by CreatedDate asc                            
27 
28                                     set @sql=update +@TableName+ set [date]=+‘‘‘‘+convert(VARCHAR(20),@CreatedDate,120)+‘‘‘‘+,[Project manager]=+‘‘‘‘+@UserApplicant+‘‘‘‘+ where id=+@id
29                                     exec (@sql)
30                                 end
31                             else if exists(select * from vendoritems where vendorheaderid in(select id from vendorheaders where code=@code) and RoleActionId=4)
32                                 begin 
33                                     select top 1 @CreatedDate=CreatedDate,@UserApplicant=UserApplicant,@action=RoleActionId from vendoritems where vendorheaderid in(select id from vendorheaders where code=@code) and RoleActionId=4 order by CreatedDate asc    
34                                         
35                                     set @sql=update +@TableName+ set [date]=+‘‘‘‘+convert(VARCHAR(20),@CreatedDate,120)+‘‘‘‘+,[Project manager]=+‘‘‘‘+@UserApplicant+‘‘‘‘+ where id=+@id
36                                     exec (@sql)
37                                 end
38                                 
39                             else
40                                 begin
41                                     select top 1 @OriginalDate=CreatedDate from vendorheaders where code=@code order by CreatedDate asc
42                                     set @sql=update +@TableName+ set [date]=+‘‘‘‘+convert(VARCHAR(20),@OriginalDate,120)+‘‘‘‘+ where id =+@id
43                                     exec (@sql)
44                                 end
45                         end
46                         else 
47                             begin
48                                 set @sql=update +@TableName+ set [Project manager]=‘‘Not find this data‘‘ where id=+@id
49                                 exec(@sql)
50                             end
51                     end try
52 
53                     begin catch
54                         print ERROR_MESSAGE()
55                         rollback tran
56                         close _cur 
57                         deallocate _cur
58                         return
59                     end catch
60 
61                     fetch next from _cur into @id,@code
62                     print @id
63                 end
64     commit tran
65     close _cur
66     deallocate _cur
67 End

 

以上是关于动态游标存储过程 表名为参数的主要内容,如果未能解决你的问题,请参考以下文章

具有参数化模式名称并用于目标表中的 BULK INSERT 的动态游标

oracle 存储过程执行动态SQL 返回结果给游标,外部程序获得dataset结果集。

oracle存储过程 中把临时表数据 返回结果集

mysql 存储过程

Oracle 存储过程 - 创建游标后我可以清空临时表吗

Sql Server在存储过程里面使用游标遍历一个表