Я хочу создать хранимую процедуру, которая принимает простой оператор SELECT и возвращает набор результатов в виде строки CSV. Таким образом, основная идея состоит в том, чтобы получить оператор sql из пользовательского ввода, запустить его с помощью EXEC (@stmt) и преобразовать набор результатов в текст с помощью курсоров. Однако SQLServer не позволяет:
- выбор * из хранимой процедуры (@sqlStmt)
- UDF с EXEC (@sqlStmt)
, поэтому я попытался вставить в #tempTable EXEC (@sqlStmt), но это не сработало (ошибка = "неверное имя объекта #tempTable").
Я застрял. Не могли бы вы пролить свет на этот вопрос?
Большое спасибо
EDIT:
На самом деле вывод (например, строка CSV) не важен. Проблема в том, что я не знаю, как назначить курсор на набор результатов, возвращаемый EXEC. SP и UDF не работают с Exec (), в то время как создание временной таблицы перед тем, как вставить значения, невозможно без знания оператора ввода.
Я думал об OPENQUERY, но он не принимает переменные в качестве своих параметров.