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?

questionAnswers(1)

yourAnswerToTheQuestion