2014-10-16 4 views
-2

Допустит, я хочу написать хранимый тычокЗАПОМНЕННОЙ PROD FOR UPDATE SQL QUERY WHERE окнеИМЯстолбец динамичен

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 

Я знаю, что код выше не будет работать. Я знаю, что вы можете написать динамический код, но меня не интересует динамический код. Может ли кто-нибудь помочь с другим соглашением. Может быть, использование case case или If statemens.

+0

sql server или mysql? –

+0

@ M.Ali sql server –

ответ

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 
+0

Как я уже сказал - Спасибо –

+0

, вы не можете сделать это без динамического sql. кстати, почему вы не хотите использовать динамический sql? какой-либо конкретной причине? –

+0

сторона политики компании. Спасибо –