一意の識別子のコレクションをストアド プロシージャに渡す必要があります。やりたいことをテストするために、次のクエリを書きました。
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
次のエラーが表示されます。
「D7F39」付近の構文が正しくありません。
私が間違っていることを知っている人はいますか?