INSERT INTO @table_name ... EXEC usp_name - PullRequest
1 голос
/ 21 мая 2010

Я читал на многих веб-сайтах, что следующий код не будет работать, где @table_name является табличной переменной:

INSERT INTO @table_name EXEC usp_name usp_param1, usp_param2

Но приведенный выше точный код прекрасно работает внутри хранимой процедуры в SQL Server 2005 (версия 9.0.4035).

Даже в MSDN (URL: http://msdn.microsoft.com/en-us/library/aa260638%28v=SQL.80%29.aspx) упоминается, что код вставки не будет работать, если попытка выполнить вставку с помощью exec выполняется на табличной переменной. К сожалению, на странице MSDN вверху упоминается, что страница применяется в SQL Server 2000, что добавляет путаницы.

Кто-нибудь пролил бы свет на это? Заранее спасибо.

1 Ответ

1 голос
/ 21 мая 2010

Эквивалент SQL 2008/2005 MSDN Страница отличается ::

Однако таблицу нельзя использовать в следующее утверждение:

SELECT select_list INTO table_variable

Это потому, что SELECT ... INTO создает таблицу назначения, а семантика создания несовместима с семантикой переменной области.

INSERT INTO @table EXEC ... поддерживается. Вы не можете указать табличный параметр , но он отличается от табличной переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...