2

我有一张桌子

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

QueryIndex 是一个循环计数器,它将从@QueryIndex 中获取值。FieldValue 将从另一个 SQL 字符串中获取值。出于某种原因,我需要动态执行 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

谢谢。

4

2 回答 2

3

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

SET @SQL = 'SELECT ' + cast(@QueryIndex as varchar(16)) + ',' + @FieldName + ...
INSERT INTO @Results(QueryIndex, FieldValue)
   EXEC (@SQL)
于 2012-05-02T10:46:23.377 回答
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......

于 2012-05-02T10:40:29.873 回答