存储的PROD用于更新SQL查询,其中列名称是动态的

时间:2014-10-16 19:08:22

标签: sql-server

假设我想写一个存储的产品

For SELECT

我找到了SELECT的上述链接,但我想做的是UPDATE:

SpUpdate @TableName varchar(50), @ColumnName varchar(50), @Value int, @Condition int

AS
BEGIN
 UPDATE @Tablename
 SET @ColumnName = @Value
 Where PrimaryColName = @Condition
END

我知道上面的代码不会运行。我知道你可以写一个动态代码,但我对动态代码不感兴趣。任何人都可以帮助不同的approch。也许使用case语句或if statemens。

1 个答案:

答案 0 :(得分:0)

CREATE PROCEDURE SpUpdate 
  @TableName  SYSNAME
, @ColumnName SYSNAME
, @Value      INT
, @Condition  INT
AS
BEGIN
  SET NOCOUNT ON;
DECLARE @Sql NVARCHAR(MAX);

SET @Sql =  N' UPDATE ' + QUOTENAME(@TableName)
          + N' SET ' + QUOTENAME(@ColumnName) + N' = @Value '
          + N' WHERE PrimaryColName = @Condition '

EXECUTE sp_executesql @Sql
                     ,N'@Value INT, @Condition INT'
                     ,@Value
                     ,@Condition
END
相关问题