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