使用动态SQL时更改变量

时间:2013-11-20 15:51:34

标签: sql sql-server

我今天遇到了一个问题,我想,“嘿,这可能是尝试动态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。有什么方法可以做我想要的吗?

1 个答案:

答案 0 :(得分: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