Почему нельзя вставлять хранимые процедуры INSERT EXEC? - PullRequest
2 голосов
/ 04 января 2010

Я нашел довольно хорошую статью, в которой подробно рассказывается, как обмениваться данными таблиц, и упоминается, что совместное использование данных таблиц в стиле INSERT EXEC (http://www.sommarskog.se/share_data.html#INSERTEXEC) имеет недостаток, заключающийся в том, что его нельзя вкладывать?

Другими словами [по крайней мере в SQL Server 2005], в псевдокоде ниже INSERT EXEC PROC1 произойдет ошибка во время выполнения. Мне было интересно, если кто-нибудь знает, почему это так.

CREATE PROC1
AS
  --Fill table variable with data from somewhere
  INSERT INTO @tbl EXECUTE spI_Return_Data

  -- Do some stuff to the data

  -- 'Return' it
  SELECT * FROM @tbl
GO

CREATE PROC2
AS
  --Fill table variable with data from PROC1
  INSERT INTO @tbl EXECUTE PROC1

  -- Do some stuff to the data

  -- 'Return' it
  SELEC * FROM @tbl
GO

1 Ответ

0 голосов
/ 04 января 2010

Внутренние ограничения реализации.

Если вам нужно захватить вывод хранимых процедур, то для начала эти процедуры должны быть табличной функцией. В конечном итоге вы можете обойти ограничение, используя процедуры CLR.

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