2009-09-28 2 views
0

Я пишу хранимую процедуру, которая должна выполнять исходный файл .sql. Хранимая процедура MySQL должна запускать сценарий .sql и предоставлять возвращаемое значение на основе того, существует ли файл .sql, если возникает ошибка или существует и выполняется без ошибок. Может ли кто-нибудь предоставить мне какое-то направление по правильному синтаксису для использования в моей хранимой процедуре для вызова файла .sql? Это просто CALL myfile.sql?MySQL Хранимая процедура, которая оценивает, выполняется ли другая процедура

Спасибо, Sid

ответ

0

Там нет никаких команд в MySQL языке, чтобы прочитать файл .sql. Ключевое слово «source» - это внутренняя команда командной строки MySQL. Если вы хотите выполнить команду SQL SQL, вы можете сделать следующее: 1) прочитать файл в таблице с помощью команды LOAD DATA INFILE (но применяются некоторые ограничения безопасности); 2) загрузить первую запись из этого файла в переменную; 3) создать подготовленную инструкцию переменной; 4) выполнить подготовленное заявление.

Указанная выше процедура чревата ограничениями и проблемами. Первым и наиболее заметным из них является то, что разрешение выполнения общего кода является ответственностью за безопасность. Во-вторых, вы не будете иметь никакого контроля над тем, что вы выполняете.

Если вам действительно нужно, вы можете использовать MySQL Proxy (http://launchpad.net/mysql-proxy), который может выполнять вышеуказанные операции с гораздо большим контролем и гибкостью на каждом шаге.

+0

Большое спасибо за помощь и руководство. Я ценю вашу помощь! – SidC

+0

Похоже, что MySQL Proxy не является жизнеспособным решением. Оказывается, требование состоит в том, чтобы выполнить пакет команд, содержащийся в файле .sql. Любое предложение о том, как это сделать? Должен ли я искать решение вместо PHP? – SidC

Смежные вопросы