I wish to do something like the following:
declare @FrameNumber nvarchar(20)
set @FrameNumber = \'(p1, p2)\'
select from myTable where c1 in @FrameNumber
You could put load those values into a table variable, or you could use dynamic sql. Here are examples of each:
DECLARE @FrameNumbers TABLE (
Frame NVARCHAR(20)
)
INSERT INTO @FrameNumbers (
Frame
)
SELECT 'p1'
UNION ALL SELECT 'p2'
option 1:
SELECT * FROM myTable WHERE c1 in (
SELECT Frame
FROM @FrameNumbers
)
option 2:
SELECT
m.*
FROM myTable m
INNER JOIN @FrameNumbers f ON f.Frame = m.c1
All that is fine, but this is my favorite:
DECLARE
@FrameNumber nvarchar(20),
@sql nvarchar(max),
@ParamDef nvarchar(1000)
SET @FrameNumber = '(p1, p2)'
SET @sql = N'SELECT FROM myTable WHERE c1 IN ' + @FrameNumber
EXECUTE dbo.sp_ExecuteSQL @sql