2010-08-16 9 views
1

MySQL을 사용하여 프로그래밍 방식으로 저장 프로 시저를 만드는 방법이 있습니까? 준비된 문을 사용하여 데이터베이스 및 테이블을 만드는 저장 프로 시저를 작성할 수는 있지만 준비된 문으로 저장 프로 시저를 만드는 것이 지원되지 않는다는 오류 메시지가 나타납니다.MySQL을 사용하여 MySQL 저장 프로 시저 만들기

PHP 또는 Java에서이 작업을 수행 할 수 있다는 것을 알았지 만, 지금까지는 모든 스키마 관리 도구를 SQL 스크립트로 유지하고 있습니다. 가능한 경우 두 번째 언어 종속성을 피하고 싶습니다.

답변

1

create procedure 문을 SQL에서 동적으로 작성한 다음 select into outfile을 사용하여 명령문을 로컬 디스크에 덤프 한 다음 파일을 원본 DB로로드 할 수 있습니다. 여기

빠른 예제 : 제안에 대한

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

테이블에 INFORMATION_SCHEMA.ROUTINES 레코드를 삽입하면됩니다. 나는 그것을 시도하지는 않았지만 작동해야한다. (예전에 언젠가 --routines 스위치를 mysqldump에 추가하는 것을 잊어 버렸고 나중에이 하나의 테이블을 덤프하여 모든 프로 시저를 복구했다.)

+0

감사합니다 - 불행하게도 INFORMATION_SCHEMA는 읽기 전용 테이블 것 같다 : http://dev.mysql.com/doc/refman/5.0/en/ information-schema.html – jnoss

관련 문제