2015年12月8日 星期二

【SQL】Using WHERE IN Clause in Stored Procedure

在預存程序使用 WHERE col IN ('xxx', 'yyy', ...) 這樣的條件式,且 'xxx', 'yyy', ... 的部分以參數型式傳入的方法。

作法
CREATE PROCEDURE [dbo].[usp_SelectProductByIds]
    @productIds nvarchar(max)    
AS
BEGIN
    SET NOCOUNT ON 
    DECLARE @cmd nvarchar(max) 
    SET @cmd = N'SELECT * FROM Product WHERE id IN (' + @productIds + ')'
    EXEC sp_executesql @cmd
END

簡單的說就是把本來應該要直接跑的 sql cmd 改成字串 @cmd,再把 IN 的參數拼進這份字串裡,最後利用 EXEC sp_executesql 去執行 @cmd,就可以達到效果了。

ref: StackOverFlow 、 DMXZone

沒有留言:

張貼留言