2013-11-20 54 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变量之前设置。但通过这样做,我不能使用不同的@Conditions多次运行@Query。有什么办法可以做我想做的事吗?

+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