Ваш SP может быть как
Alter PROCEDURE [dbo].[test]
@clientIds varchar(Max)
AS
SET NOCOUNT ON;
DECLARE @SQL NVARCH(max) = N'SELECT * FROM [tblClient] WHERE [clientID] IN(' + @clientIds + N');';
EXECUTE sp_executesql @SQL;
Но это не помешает SQL-инъекции, как это может быть в параметре '1,2;DELETE * FROM tblClient;
.
Я бы использовал Table-Valued Parameter
вместо
CREATE TYPE MyType AS TABLE (Id INT);
Alter PROCEDURE [dbo].[test]
@IDs MyType READONLY
AS
SET NOCOUNT ON;
SELECT *
FROM [tblClient]
WHERE [clientID] IN(SELECT Id FROM @IDs);
ИЛИ
Alter PROCEDURE [dbo].[test]
@IDs MyType READONLY
AS
SET NOCOUNT ON;
SELECT C.*
FROM [tblClient] C INNER JOIN @IDs Ids
ON C.clientID = Ids.Id;
Также, проверьте мой ответ здесь для ситуации, подобнойваш.