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

 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
时间: 2024-11-07 09:25:26

动态游标存储过程 表名为参数的相关文章

hibernate动态创建数据库表名几种方式

数据库中数据量很大, 但又不可以删除时同时又要优化程序检索数据时间. 答:方式有很多比如 创建数据库表分区,创建索引, 存储过程等; 我这里采用动态创建数据库表的方式. 完全可以在不创建表分区情况下实行分表管理 例如 日志记录表 将日期(yyyy-MM)作为默认表后缀动态追加, 例如 文章发布表 将用户名作为后缀名进行动态追加 ; 动态创建数据库表的方式要具体问题具体分析, 比如JDBC中直接使用create table 表名_dynamicStr(...); 文章发布系统 dynamicStr

ibatis动态的传入表名、字段名

ibatis动态的传入表名.字段名,主要传入表名和字段名的不一致. Java代码: Map<String,Object> params = new HashMap<String,Object>(); params.put("tableName", tableName); params.put("sidFieldName", sidFieldName); params.put("lastDateFiledName", las

sql数据库表名做参数

declare @tablename nvarchar(50)declare @count intset @tablename = 'SplitzRank'declare @sqlstr nvarchar(512)set @sqlstr = 'select @count=count(*) from '[email protected]select @sqlstrexec sp_executesql @sqlstr,N'@count int output',@count outputselect

关于mysql存储过程创建动态表名及参数处理

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 最近游戏开始第二次内测,开始处理操作日志,最开始把日志放到同一个表里面,发现一天时间,平均100玩家在线,操作记录就超过13万条,决定拆表,按照日期来保存日志,每天的日志存到一个表里面,然后定期把老的数据导出来备份后删掉. 具体思路是写日志的时候,根据当前的时间决定插入到当天的表里面,如表不存在则创建一个新的表,表名里面带上当天的日期.这就涉及到需要在存储过程里面动态创建一个跟日期相关的表.mysql不

关于SQL数据表存储过程表名前缀换成dbo代码

1.全部表名换成dbo <span style="font-size:18px;">EXEC sp_MSforeachtable 'exec sp_changeobjectowner ''?'',''dbo'' '</span> 2.存储过程全部换成dbo <span style="font-size:18px;">CREATE PROCEDURE dbo.ChangeObjectOwner @OldOwner as NVARCH

mysql 存储过程 动态表名

今天写存储过程时,遇到要将表名最为参数的问题,如果不涉及到游标的话,使用prepare可以解决问题,但是,动态表名要运用在游标中的话,则prepare就得靠边站了. 集众人之智慧,最后,使用临时表解决了问题. 如何在MySQL的存储过程中实现把过程参数用在游标定义的SELECT命令里面作为表名引用 首先,我们来把场景描绘一下,比如下面的例子(当然是无法正确运行的):   CREATE PROCEDURE `proc`(SourceDBName CHAR(50), SourceTableName

Sql Server根据表名生成查询的存储过程(查询条件可选)

static void Main(string[] args) { string 表名 = "water_emstime"; string sql = "exec GetTableSelect " + 表名; string ConString = "server=xxx.xxx.xx.xx;database=newFW;uid=sa;pwd=sa"; SqlDataAdapter da = new SqlDataAdapter(sql, ConS

hibernate动态表名映射

引自:http://blog.csdn.net/xvshu/article/details/39187779 最近的一个项目有一个需求,有N个考核单位,要对每个考核单位生成一张考核情况表,这样做的目的是横切数据库,这这个需求的实现中,我的组员遇到了一个技术问题,我将我的解决办法和整个思考过程与大家分享, 思路: 用一个配置文件,一个类去映射多个表,(每个表的结构相同).按照平时的做法,有多少个表就要 写多少个配置文件,岂不是很麻烦.怎样才能只写一个配置文件就能达到上述目的呢? 经过研究,发现hi

hibernate动态表名映射--只有想不到,没有做不到

最近的一个项目有一个需求,有N个考核单位,要对每个考核单位生成一张考核情况表,这样做的目的是横切数据库,这这个需求的实现中,我的组员遇到了一个技术问题,我将我的解决办法和整个思考过程与大家分享, 思路: 用一个配置文件,一个类去映射多个表,(每个表的结构相同).按照平时的做法,有多少个表就要 写多少个配置文件,岂不是很麻烦.怎样才能只写一个配置文件就能达到上述目的呢? 经过研究,发现Hibernate中的NamingStrategy可以达到这个目的.它是用来定义表名和列名映射规 则的一个接口.我