Как получить таблицу из EXEC sp_executesql в @TempTable, в хранимой процедуре

Мне нужна помощь

Моя цель:

У меня есть @query в хранимой процедуре, которая работает отлично. Теперь я должен выполнить больше операций над возвращающейся таблицей из выполнения @query в той же хранимой процедуре. например, мне нужно добавить больше столбцов в возвращаемую таблицу и добавить новые данные из большего количества запросов.

Моя проблема:

Я не могу получить возвращаемую форму таблицы (EXEC sp_executesql) в переменную (@TempTable). И еще одна проблема заключается в том, что количество возвращаемых столбцов неизвестно (динамическое).

Шаги должны быть такими:

  1. Объявить TempTable
  2. TempTable = EXEC sq_executesql
  3. Добавить новые столбцы в TempTable
  4. Заполните дополнительные данные

Пожалуйста, помогите мне

1 ответ

это может быть достигнуто с использованием глобальных временных таблиц, как показано ниже:

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.

licensed under cc by-sa 3.0 with attribution.