次のデータを渡す C# アプリがあります。
データセット ID = 10; ユーザー ID = 1; varnames = "'ACT97','ACTCHNG','ACTQTR2','ACTSCOR2'";
ストアド プロシージャは次のとおりです。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[s_LockCheck]
-- Add the parameters for the stored procedure here
@varNames VARCHAR(max),
@datasetID INT,
@userID INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON
SELECT COUNT(*) as locked FROM VarLocks WHERE var_name IN (@varNames) AND dataset_id = @datasetID AND user_id != @userID AND is_locked = 1
END
しかし、そのように呼び出すと、それよりも高くなければならないときに 0 のカウントが返されます。
exec s_LockCheck "'ACT97','ACTCHNG','ACTQTR2','ACTSCOR2'", 88, 14
上記の各 ACTXXX は、列 var_name の変数名です。
IN句を正しく実行していないのはなぜですか?