2013-11-20 3 views
0

Сегодня я столкнулся с проблемой, когда подумал: «Эй, может быть, самое время попробовать какой-нибудь динамический SQL!» Однако у меня проблема. Упрощенная версия может быть ...Изменение переменной при использовании динамического SQL

Declare @Condition VARCHAR(MAX) 

SET @Query = 'INSERT INTO #Report_Table 
         SELECT column1, column2, column3 
         FROM my_table 
         WHERE column4 = ''' + @Condition +'''' 
SET @Condition = 'Blah' 
EXEC(@Query) 
SET @Condition = 'OtherBlah' 
EXEC(@Query) 

Однако, я нашел, что это не работает. Это не дает мне результатов, когда я пытаюсь. Кажется, переменная @Condition должна быть установлена ​​перед переменной @Query. Но, делая это, я не могу запускать @Query несколько раз, используя разные @Conditions. Есть ли способ сделать то, что я хочу?

+0

Положить его в петлю. – OTTA

+0

Создайте временную таблицу условий (или CTE), а затем используйте соединение ... –

ответ

2
CREATE TABLE #Conditions (condition varchar(max)) 

INSERT #Condition VALUES 
('Blah'), 
('OtherBlah') 

INSERT INTO #Report_Table 
SELECT column1,column2,column3 
FROM my_table 
INNER JOIN #Conditions 
    ON column4 = condition 
Смежные вопросы