Question: When I try this query it works:

```
SELECT *
FROM tbl_Users
WHERE UserId IN (555, 3695, 8787))

```

But when I put it in stored procedure it get value only if I pass one ID. If I pass more ID's 

I got nothing returned from database:

```
CREATE PROCEDURE myStoredProcedure
    @m_UserIdList varchar(500)
AS    
    SELECT u.*, p.*
    FROM tbl_Users u 
    INNER JOIN tbl_Bunker b 
    ON u.BunkerId = b.Bunker
    WHERE u.UserId IN (@m_UserIdList)

```

Answer: 
Since it wasn't mentioned, you can use the XML data type.

```
BEGIN
DECLARE @xml XML
SELECT @xml = '<n>1</n><n>2</n><n>3</n>'

SELECT t.n.value('.','int')  FROM @xml.nodes('*') as t(n)
IF 1 IN (SELECT t.n.value('.','int')  FROM @xml.nodes('*') as t(n))
    PRINT('Yep')
IF 4 NOT IN (SELECT t.n.value('.','int')  FROM @xml.nodes('*') as t(n))
    PRINT('It Works')
END

```

It's not as efficient as table valued columns but it's easier to setup/use for the "Caller".

If the caller already has an array or list of elements to convert them to XML he just has to do a String.Join with "</n><n>" as the delimiter then if the resulting string is not empty prepend "<n>" and append "</n>"
You can't pass a string of values to the stored procedure. The most obvious answer would be to make your whole sql query string dynamic, the two links should take you through the various other alternatives that are available -

<http://www.sommarskog.se/arrays-in-sql.html>

[Parameterize an SQL IN clause](https://stackoverflow.com/questions/337704/parameterizing-a-sql-in-clause)