Можно ли вызвать сценарий SQL из хранимой процедуры в другом сценарии SQL?
Я хотел бы использовать. вызвать скрипт sql из хранимого процесса, как...
delimiter ///
create procedure append_procedure()
BEGIN
\. test.sql;
END; ///
delimiter ;
Я получаю сообщение "не удалось открыть" test.sql; ' "ошибка, когда я запускаю его таким образом. Я тоже попробовал! но тогда я получаю разрешение на отказ. Тем не менее, я не могу устранить; или все это сломано. Это можно обойти?
Что я делаю неправильно?
2 ответа
Существует набор команд, встроенных в клиент mysql. Они задокументированы подmysql
Команды. "К ним относятся РАЗДЕЛИТЕЛЬ, ИСТОЧНИК, ПОМОЩЬ, ПОДКЛЮЧИТЬ, ИСПОЛЬЗОВАТЬ, ВЫЙТИ и т. Д.
\.
(или же SOURCE
) команда является одним из таких встроенных. Вы не можете выполнять эти встроенные команды ни программно, ни из хранимой процедуры.
Это все равно что пытаться запустить встроенную оболочку UNIX из программы на C, используя execl()
,
Другая аналогия может быть в веб-браузере, где вы можете вводить специальные запросы, например "about:
", которые обрабатываются самим приложением браузера; это не приводит ни к какому HTTP-запросу к удаленному веб-сайту.
Кроме того, это не помогло бы, если бы вы могли получить сценарий из хранимой процедуры, потому что сам сценарий, скорее всего, содержит набор команд, встроенных в клиент mysql, и поэтому не может быть запущен хранимым процессом.
Смотрите также мои ответы на эти связанные вопросы:
Если вы используете Sql Sevrer 2005, вы можете использовать команду xp_cmdshell.
http://msdn.microsoft.com/en-us/library/ms175046(SQL.90).aspx
Или же
http://www.sqlservercentral.com/articles/Administering/scriptscheduling/450/