sql 使用存储过程传递列名或表名作为参数

时间:2021-07-08 10:40:33

     在使用存储过程时,若动态的传递表名或者是列名时,可以考虑使用动态sql。代码如下;

  

 
alter procedure Proc_UpdateDatetimeCounter
@businessNum nvarchar( 200),--业务号
@column nvarchar( 200),--列名
@value datetime--值
as
declare @sql nvarchar(max)
set @sql = N ' update counter set  '+quotename(@column)+ ' = @value1 where businessNum = @businessNum1 '
 exec sp_executesql @sql,
                    N ' @value1 as datetime,@businessNum1 as nvarchar(200) ',
                    @value1 = @value,
                    @businessNum1 = @businessNum