2015-11-04 77 views
0

問題應用更新查詢:如何使用IN操作符存儲過程

update tablename 
set columnname = "12" 
where columnname2 in ('1','2','3','4'); 

它將與簡單的查詢運行。

如何使用存儲過程即

update tablename 
set columname = @param1 
where columnname2 in (@param2); 

其中@參數2有「1」,「2」等。

回答

0

你應該創造出用於分隔功能上面的查詢運行逗號分隔字符串..

CREATE FUNCTION SplitString 
    ( 
     @Input NVARCHAR(MAX), 
     @Character CHAR(1) 
) 
    RETURNS @Output TABLE (
     Item NVARCHAR(1000) 
) 
    AS 
    BEGIN 
     DECLARE @StartIndex INT, @EndIndex INT 

     SET @StartIndex = 1 
     IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character 
     BEGIN 
       SET @Input = @Input + @Character 
     END 

     WHILE CHARINDEX(@Character, @Input) > 0 
     BEGIN 
       SET @EndIndex = CHARINDEX(@Character, @Input) 

       INSERT INTO @Output(Item) 
       SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - 1) 

       SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input)) 
     END 

     RETURN 
    END 
    GO 

現在您的更新查詢應該是

Update tablename set [email protected] 
    Where columnname2 in (SELECT Item FROM dbo.SplitString(@param2, ','))