Создание хранимых процедур MySQL с использованием MySQL - PullRequest
1 голос
/ 16 августа 2010

Есть ли способ программно создавать хранимые процедуры с использованием MySQL?Я могу написать хранимую процедуру для создания баз данных и таблиц, используя подготовленные операторы, но получаю сообщение об ошибке, в котором говорится, что не поддерживается создание хранимых процедур с подготовленными операторами.

Я понимаю, что могу сделать это на PHP или Java, но до сих пор я держал все свои инструменты управления схемами в виде сценариев SQL, и я хотел бы избежать зависимости от второго языка, если смогу.

Ответы [ 2 ]

2 голосов
/ 16 августа 2010

Один из способов, который вы можете попробовать, - это динамическое построение оператора create procedure в SQL, затем использование select into outfile для выгрузки оператора на локальный диск, а затем исходный файл для загрузки процедуры в БД.

Вот краткий пример:

set @proc_name = 'my_proc';
set @body1 = 'select ''hello''; ';
set @body2 = 'select ''world''; ';
set @delimiter = '$$';

set @create_proc_stmt = concat(
  'create procedure ',
  @proc_name,
  '() begin ', 
  @body1,
  @body2, 
  ' end ',
  @delimiter
);

select @create_proc_stmt into outfile '/tmp/create_proc_stmt.sql';

delimiter $$
\. /tmp/create_proc_stmt.sql
delimiter ;

call my_proc();
1 голос
/ 16 августа 2010

Я думаю, что вы можете сделать это, вставив запись в таблицу INFORMATION_SCHEMA.ROUTINES. Я не пробовал, но это должно сработать (однажды в прошлом я забыл добавить --routines переключиться на mysqldump, а позже я восстановил все процедуры, сбросив эту таблицу).

...