MySQL 저장 프로시저의 설명 표시하기
MySQL에서 이미 생성된 저장 프로시저(stored procedure)의 정의, 즉 생성 코드를 확인하려면 SHOW CREATE PROCEDURE 문을 사용합니다. 기본 문법은 다음과 같습니다.
SHOW CREATE PROCEDURE yourProcedureName();
1. 예제용 저장 프로시저 생성
먼저 실습에 사용할 간단한 저장 프로시저를 만들어 보겠습니다.
mysql> DELIMITER //
mysql> CREATE PROCEDURE sample_Procedure()
BEGIN
SELECT "HELLO MYSQL!!!!";
END
//
Query OK, 0 rows affected (0.18 sec)
mysql> DELIMITER ;
DELIMITER 명령은 프로시저 본문 내부의 세미콜론(;)이 SQL 문 종결자로 해석되지 않도록 구분 기호를 임시로 변경하는 역할을 합니다. 프로시저 생성이 끝나면 원래대로 되돌려 줍니다.
2. 저장 프로시저 호출하기
생성한 프로시저는 CALL 명령으로 실행할 수 있습니다.
mysql> call sample_Procedure();
실행 결과는 다음과 같습니다.
+-----------------+
| HELLO MYSQL!!!! |
+-----------------+
| HELLO MYSQL!!!! |
+-----------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
3. SHOW CREATE PROCEDURE로 정의 확인하기
이제 앞서 만든 저장 프로시저의 정의를 조회하는 쿼리를 실행해 보겠습니다.
mysql> show create procedure sample_Procedure;
실행 결과는 다음과 같습니다.
+------------------+--------------------------------------------+-----------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| Procedure | sql_mode | Create Procedure | character_set_client | collation_connection | Database Collation |
+------------------+--------------------------------------------+-----------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| sample_Procedure | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | CREATE DEFINER=`root`@`%` PROCEDURE `sample_Procedure`() BEGIN SELECT "HELLO MYSQL!!!!"; END | utf8 | utf8_general_ci | utf8_unicode_ci |
+------------------+--------------------------------------------+-----------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
1 row in set (0.00 sec)
출력 결과 항목 설명
- Procedure: 저장 프로시저의 이름입니다.
- sql_mode: 해당 프로시저가 생성될 당시 적용되었던 SQL 모드입니다.
- Create Procedure: 실제 프로시저를 재현할 수 있는 전체 CREATE 문입니다. DEFINER 정보와 함께 원본 정의가 그대로 표시됩니다.
- character_set_client / collation_connection / Database Collation: 클라이언트 문자셋, 연결 콜레이션, 데이터베이스 콜레이션 정보입니다.
참고: SHOW CREATE PROCEDURE 외의 방법
저장 프로시저의 정의를 확인하는 다른 방법들도 있습니다.
- information_schema.ROUTINES 조회:
SELECT ROUTINE_DEFINITION FROM information_schema.ROUTINES WHERE ROUTINE_NAME = 'sample_Procedure';쿼리로 프로시저 본문만 간단히 확인할 수 있습니다. - mysqldump 활용:
mysqldump --routines --no-data db_name옵션을 사용하면 데이터베이스 내 모든 프로시저와 함수의 정의를 백업 형태로 추출할 수 있습니다.
이처럼 SHOW CREATE PROCEDURE 문을 활용하면 기존 저장 프로시저의 정의를 손쉽게 확인할 수 있으며, 이를 바탕으로 코드 검토, 문서화, 또는 다른 환경으로의 마이그레이션 작업을 효율적으로 수행할 수 있습니다.