Мне нужно «внедрить» файл , который содержит процедуру T-SQL, во многие сценарии T-SQL.Что-то вроде:
EXECUTE '../CSV_From_Sql.sql', #CsvFileCreator <other parameters>
, где #CsvFileCreator - это точка входа (т.е. имя процедуры) в '../CSV_From_Sql.sql'.
Обратите внимание, что результаты, полученные с помощью #CsvFileCreator, должны находиться в пределах (доступной) области действия / пространства имен вызывающего сценария.
В настоящий момент мне не разрешено создаватьхранимые процедуры.Чтобы соответствовать требованиям области видимости, #CsvFileCreator должен быть «внедрен» (скопирован) в каждый скрипт.Это должно быть сделано так, чтобы #CsvFileCreator мог одновременно обновляться во всех запросах (и в конечном итоге преобразовываться в хранимую процедуру).
По сути, желаемый эффект - это операция «вставить текст здесь» (т. Е. Заменить оператор EXECUTE содержимым файла).Что должно быть чрезвычайно просто сделать, за исключением того, что документация Microsoft, похоже, не допускает этого.
Некоторый контекст: в моем случае SQL-сервер используется в качестве серверной части для генератора отчетов Python 3.X GUI.Конечные пользователи не имеют абсолютно никакого доступа к коду SQL, и нет возможности для внедрения.Все, что могут сделать пользователи, - это сделать свой выбор (с помощью флажков, спин-боксов и т. Д.) И нажать кнопку «Создать отчеты» (это приводит к тому, что python вызывает SQL-сервер).Кроме того, сама природа приложения означает, что оно НИКОГДА не будет находиться в сети, подключенной к внешнему миру.
По причинам, в которые я не буду вдаваться, могут использоваться только «чистые» команды T-Sql и любой тип ручного управления (например, использование таких инструментов, как SSMS, bcp, sqlcmd и т. Д.)это невозможно.В моем случае я мог автоматически вставить эту «стандартную процедуру» перед вызовом каждого запроса.
Существует ли чистый T-SQL способ получить эффект «выполнить файл» или «скопировать файл»?