Cláusula SQL IN no procedimento armazenado
Eu tenho um aplicativo c # que passa nos seguintes dados:
datasetID = 10; userID = 1; varnames = "'ACT97', 'ACTCHNG', 'ACTQTR2', 'ACTSCOR2'";
O procedimento armazenado é:
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
Mas quando eu chamo assim, está retornando uma contagem de 0 quando deveria ser maior que isso:
exec s_LockCheck "'ACT97','ACTCHNG','ACTQTR2','ACTSCOR2'", 88, 14
Cada ACTXXX acima é um varname da coluna, var_name.
Por que não está fazendo a Cláusula IN corretamente?