Почему нельзя использовать оператор INSERT EXEC в хранимой процедуре, вызываемой другой хранимой процедурой?

Сначала я попытаюсь объяснить обстоятельства. Я храню выражение фильтра в одном столбце, разделенном разрывами строки. Основная идея заключалась в следующем:

SELECT  
'SELECT ''' + REPLACE(topic_filter,CHAR(10),''' UNION ALL SELECT ''') + ''''
FROM dbo.topic_filter T
WHERE
  T.id = @id
FOR XML PATH('')

После этого я просто выполняю эту строку, чтобы поместить данные во временную таблицу. Моя проблема начинается здесь. Фрагмент находится в хранимой процедуре и используется несколькими хранимыми процедурами для создания базового источника для заполнения.
Подход 1:
Вызовите этот sp из другого SP, чтобы заполнить временную таблицу.
Результат 1:
Оператор INSERT EXEC не может быть вложенным. (Если я вызываю просто с помощью exec dbo ... style, код работает. Я получаю сообщение об ошибке только при попытке вызова внутри хранимой процедуры)

Подход 2:
Я поместил приведенный выше код в функцию значений таблицы.
Результат 2:
Недопустимое использование в функции оператора побочного эффекта INSERT EXEC. (Сама функция не компилируется)

Спасибо,
Петер

6
задан Péter 4 October 2010 в 08:54
поделиться