2015年12月8日 星期二

【SQL】Using WHERE IN Clause in Stored Procedure

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

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

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

ref: StackOverFlow 、 DMXZone

沒有留言:

張貼留言