Сначала я попытаюсь объяснить обстоятельства. Я храню выражение фильтра в одном столбце, разделенном разрывами строки. Основная идея заключалась в следующем:
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.
(Сама функция не компилируется)
Спасибо,
Петер