Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 저장 프로시저의 정의(생성 코드) 확인 방법

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 문을 활용하면 기존 저장 프로시저의 정의를 손쉽게 확인할 수 있으며, 이를 바탕으로 코드 검토, 문서화, 또는 다른 환경으로의 마이그레이션 작업을 효율적으로 수행할 수 있습니다.