Possible Duplicate:
Parameterizing an SQL IN clause?
Passing an array of parameters to a stored procedure傳遞唯一標識符的陣列存儲過程
我需要唯一標識符的集合傳遞給我的存儲過程。我寫了這個查詢來測試我想要做什麼:
SELECT *
FROM MyTable
WHERE MyTable.TypeId IN ('852D7F39-302A-4E35-94D4-9A0335F8E9DC,1DF6EAA0-D0EC-4E4D-9E6B-1779F0E42A82')
此查詢運行正確。所以我創造了這個存儲過程:
CREATE PROCEDURE [dbo].[MySproc] (
@TypeIdsList varchar(8000)
) AS
BEGIN
EXEC(
'SELECT *
FROM MyTable
WHERE MyTable.TypeId IN (' + @TypeIdsList + ')'
)
END
但是,當我用一些樣本數據執行它:
DECLARE @return_value int
EXEC @return_value = [dbo].[MySproc]
@TypeIdsList = N'852D7F39-302A-4E35-94D4-9A0335F8E9DC,1DF6EAA0-D0EC-4E4D-9E6B-1779F0E42A82'
SELECT 'Return Value' = @return_value
GO
我得到這個錯誤:
Incorrect syntax near 'D7F39'.
任何人都知道我在做什麼錯誤?