Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Можно ли вызвать sql-скрипт из хранимой процедуры в другом sql-скрипте?

Автор вопроса: Yevgeny SimkinОтветов: 2

Я хотел бы использовать . для вызова сценария sql из хранимой процедуры, например...

delimiter ///
create procedure append_procedure()
BEGIN
\. test.sql;
END; ///
delimiter ;

Я получаю сообщение "не удалось открыть test.sql;" "ошибка, когда я запускаю ее таким образом. я тоже пробовала! но затем я получаю отказ в разрешении. Однако я не могу устранить ; или все сломалось. Это можно обойти?

Что я делаю неправильно?

stored-proceduresscripting

Ответы

Ответ 1 · рейтинг 5 · Bill Karwin

Существует набор команд, встроенных в клиент mysql. Они задокументированы в разделе "mysql Commands". К ним относятся DELIMITER, SOURCE, HELP, CONNECT, USE, QUIT и т. д.

Команда \. (или SOURCE) является одной из этих встроенных команд. Эти встроенные команды нельзя выполнять ни программно, ни из хранимой процедуры.

Это все равно, что пытаться запустить встроенную оболочку UNIX из программы на C, используя execl().

Другая аналогия может быть в веб-браузере, где вы можете вводить специальные запросы, такие как "about:", которые обрабатываются самим приложением браузера; это не приводит к каким-либо HTTP-запросам к удаленному веб-сайту.

Кроме того, не помогло бы, если бы вы могли получить сценарий из хранимой процедуры, потому что сам сценарий, вероятно, содержит набор команд, которые являются встроенными клиентскими функциями mysql и, следовательно, не могут быть запущены хранимой процедурой.


Смотрите также мои ответы на эти связанные вопросы:

Ответ 2 · matt_dev

Если вы используете Sql Sevrer 2005, вы можете использовать команду xp_cmdshell.

http://msdn.microsoft.com/en-us/library/ms175046(SQL.90).aspx

Or

http://www.sqlservercentral.com/articles/Administering/scriptscheduling/450/

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы