Объявить переменную таблицы без определения столбцов? - PullRequest
4 голосов
/ 10 ноября 2010

Есть ли в SQL Server способ объявить переменную таблицы, не зная определения таблицы?

Пример использования:

DECLARE @Results TABLE
INSERT INTO @Results EXEC MyProc @param1 = @myValue

или

DECLARE @Results TABLE
SELECT INTO @Results EXEC MyProc @param1 = @myValue

или

DECLARE @Results TABLE
EXEC MyProc @param1 = @myValue INTO @Results

или

DECLARE @Results TABLE
EXEC INTO @Results MyProc @param1 = @myValue

или

DECLARE @Results TABLE
SELECT * FROM EXEC MyProc @param1 = @myValue INTO @Results

или

DECLARE @Results TABLE
SELECT * INTO @Results FROM EXEC MyProc @param1 = @myValue

или

DECLARE @Results TABLE
SELECT * INTO @Results EXEC MyProc @param1 = @myValue

(вы поняли)

1 Ответ

6 голосов
/ 10 ноября 2010

Невозможно.Цитата из "Books Online":

==============

Синтаксис Примечание. Используйте DECLARE @local_variable для объявления переменных таблицы типов.

table_type_definition ::= 
  TABLE ( { column_definition | table_constraint } [ ,...n ] ) 

==============

"(", хотя бы одно определение столбца и ")" требуется синтаксически.

PS:Вставка AFAIK в любую новую таблицу из результатов "exec" вообще невозможна.Только для таблицы с предопределенной структурой.

...