执行SQL String并将结果插入表中

时间:2012-05-02 10:36:16

标签: sql-server sp-executesql

我有一张桌子

DECLARE @Results TABLE(QueryIndex smallint, FieldValue nvarchar(50))

QueryIndex是一个循环计数器,它将从@QueryIndex获取值。 FieldValue将从另一个SQL String获取值。出于某种原因,我需要动态执行SQL字符串。

SET @SQL = "SELECT " + @FieldName + " FROM MyView"
            + " WHERE Condition1='" + @Value1 + "'"
            + " AND Condition2=" + CONVERT(nvarchar(12),@Value2)

现在我尝试将数据插入@Results

NSERT INTO @Results(QueryIndex, FieldValue)
SELECT @QueryIndex, EXEC (@SQL)

毫不奇怪,这段代码不起作用。请提供我将数据插入表格的解决方案。任何方法都值得一试。 表中的结果应该是这样的:

QueryIndex   FieldName
  1            First
  2            Second
  3            Third

感谢。

2 个答案:

答案 0 :(得分:3)

您需要将@QueryIndex的检索与选择结合起来,然后您可以简单地

SET @SQL = 'SELECT ' + cast(@QueryIndex as varchar(16)) + ',' + @FieldName + ...
INSERT INTO @Results(QueryIndex, FieldValue)
   EXEC (@SQL)

答案 1 :(得分:1)

你应该创建包含表的结构 - 之前!

 CREATE TABLE #tmp  // or @tbl... doesnt really matter...
      ( 
        ...
      ) 

    INSERT INTO #tmp  -- if we use exec we  must have the pre-Structure of the table
    EXEC (@sql) 

现在,您是否想要使用#tmp ....