You can greate a function to convert the list into a table of integers then use the function in your query
Something like
CREATE FUNCTION [dbo].[GET_INT_TABLE]
(
@STRINPUT VARCHAR(MAX)
)
RETURNS @INTTABLE TABLE
(
VALUE INT
)
AS
BEGIN
DECLARE @insertvalue varchar(32)
DECLARE @pos INT
DECLARE @nextpos INT
DECLARE @valuelen INT
SELECT @pos = 0, @nextpos = 1
WHILE @nextpos > 0
BEGIN
SELECT @nextpos = charindex(',', @STRINPUT, @pos + 1)
SELECT @valuelen = CASE
WHEN @nextpos > 0 THEN
@nextpos
ELSE
len(@STRINPUT) + 1
END - @pos - 1
set @insertvalue = (substring(@STRINPUT, @pos + 1, @valuelen))
if IsNumeric(@insertvalue) = 1
begin
INSERT @INTTABLE (VALUE)
VALUES (@insertvalue)
end
SELECT @pos = @nextpos
END
RETURN
END
Then in your stored procedure query
....
where (tbProduct.iProductid in (select value from GET_INT_TABLE(@MYSTRING)))