Можно ли вызвать сценарий SQL из хранимой процедуры в другом сценарии SQL? - PullRequest
8 голосов
/ 14 февраля 2009

Я бы хотел использовать. вызвать скрипт sql из хранимого процесса, например ...

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

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

Что я делаю не так?

Ответы [ 2 ]

5 голосов
/ 14 февраля 2009

Существует набор команд, встроенных в клиент mysql. Они задокументированы как «mysql Команды ». К ним относятся РАЗДЕЛИТЕЛЬ, ИСТОЧНИК, ПОМОЩЬ, ПОДКЛЮЧЕНИЕ, ИСПОЛЬЗОВАНИЕ, ВЫЙТИ и т. Д.

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

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

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

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


Смотрите также мои ответы на следующие вопросы:

0 голосов
/ 14 февраля 2009

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

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

или

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...