I want to pass a csv of int
1,2,3,4,5,6,7
to a stored procedure so that I can use the passed-in values in an IN() so that
IN(1,2,3,4,5,6,7)
Is that even possible?
I want to pass a csv of int
1,2,3,4,5,6,7
to a stored procedure so that I can use the passed-in values in an IN() so that
IN(1,2,3,4,5,6,7)
Is that even possible?
Just in case you simply mean to use a dynamic parameter for your SQL:
CREATE PROCEDURE [dbo].[takeMeAndMySeeEzzBee]
@csv VARCHAR(30)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql NVARCHAR(255)
SET @sql = 'SELECT THIS_AND_THAT FROM HERE WHERE YOU_ARE IN(' + @csv + ')'
EXEC sp_executesql @sql
END;
GO
-- I will runawayyyy
EXEC [dbo].[takeMeAndMySeeEzzBee] @csv='1,2,3,4'
^ is an example of how dynamic SQL can work.
Now if you mean to pull data from a .csv
file, let us know; my answer will change.
You can use XML:
CREATE PROCEDURE dbo.MyProcName
@csv nvarchar(max)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @xml xml
SELECT @xml = CAST('<a>' + REPLACE(@csv,',','</a><a>') +'</a>' as xml)
SELECT what_you_need
FROM some_table s
INNER JOIN (
SELECT t.v.value('.','int') as something
FROM @xml.nodes('/a') as t(v)
) as p
ON p.something = s.something
END
Or:
SELECT what_you_need
FROM some_table s
WHERE s.something IN (
SELECT t.v.value('.','int') as something
FROM @xml.nodes('/a') as t(v)
)