SHOW CREATE PROCEDURE 문으로 저장 프로시저 소스 코드 확인하기
MySQL에서 특정 저장 프로시저(stored procedure)의 소스 코드를 확인하고 싶다면 SHOW CREATE PROCEDURE 문을 사용하면 됩니다. 이 구문은 해당 프로시저를 처음 생성할 때 작성했던 CREATE 문 전체를 그대로 출력해 주기 때문에, 프로시저의 정의를 검토하거나 다른 데이터베이스 환경으로 옮길 때 매우 유용합니다.
사용 예시
다음은 allrecords()라는 이름의 저장 프로시저 소스 코드를 조회하는 예제입니다. 쿼리 끝에 \G를 붙이면 결과가 세로 형태로 출력되어 긴 코드도 훨씬 읽기 편해집니다.
mysql> SHOW CREATE PROCEDURE allrecords\G *************************** 1. row *************************** Procedure: allrecords sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `allrecords`() BEGIN Select * from Student_info; END character_set_client: cp850 collation_connection: cp850_general_ci Database Collation: latin1_swedish_ci 1 row in set (0.00 sec)
출력 결과 주요 항목 설명
- Procedure: 조회한 프로시저의 이름입니다.
- sql_mode: 프로시저가 생성될 당시 적용되어 있던 SQL 모드 설정 값입니다.
- Create Procedure: DEFINER 정보를 포함한 실제 프로시저 생성 코드와 본문입니다.
- character_set_client / collation_connection: 프로시저 생성 시 클라이언트에서 사용한 문자셋과 콜레이션 정보입니다.
- Database Collation: 해당 데이터베이스의 기본 콜레이션입니다.
참고로 DEFINER 절은 프로시저 실행 권한을 판단하는 기준이 되는 계정을 나타냅니다. 따라서 프로시저를 다른 서버나 스키마로 마이그레이션할 경우에는 이 DEFINER 부분을 대상 환경에 맞게 수정해 주어야 할 수 있습니다.