如何从存储过程中的@TempTable中的EXEC sp_executesql获取表

时间:2014-11-23 06:06:40

标签: sql sql-server stored-procedures

我需要一些帮助

我的目标:

我在存储过程中有一个@query,它运行正常。现在我必须在同一存储过程中从@query执行返回表上执行更多操作。例如,我必须在返回表中添加更多列,并从更多查询中添加新数据。

我的问题:

我无法将表格形式(EXEC sp_executesql)返回到变量(@TempTable)中。还有一个问题是返回的列数是未知的(动态的)。

步骤应该是这样的:

  1. 声明TempTable
  2. TempTable = EXEC sq_executesql
  3. TempTable
  4. 添加新列
  5. 填写更多数据
  6. 请指导我

1 个答案:

答案 0 :(得分:0)

这可以使用如下的全局临时表来实现:

DECLARE @sql NVARCHAR(1000)
DECLARE @Column NVARCHAR(1000)

SET @Column = 'YouColumnList' -- id,name etc. created by you dynamically.

IF( Object_id('tempdb..##IntermediateTable') IS NOT NULL )
    DROP TABLE ##IntermediateTable

SET @sql = '
SELECT ' + @Column + '
Into   ##IntermediateTable
FROM   YourTable
WHERE  id = 123
'

EXEC sp_executesql
  @sql

IF( Object_id('tempdb..#temptable') IS NOT NULL )
    DROP TABLE #temptable

SELECT *
INTO   #temptable
FROM   ##IntermediateTable

IF( Object_id('tempdb..##IntermediateTable') IS NOT NULL )
    DROP TABLE ##IntermediateTable

SELECT *
FROM   #temptable --resulting temptable to use. alter it or do whatever desired.