MySQL에서 저장 프로시저(Stored Procedure)나 함수(Function)의 정의를 확인하려면 SHOW 명령어를 사용하면 됩니다. 기본 문법은 다음과 같습니다.
SHOW CREATE PROCEDURE yourProcedureName;
저장 프로시저 생성 예제
문법을 제대로 이해하기 위해 실제로 프로시저를 하나 생성한 뒤 그 정의를 직접 확인해 보겠습니다. 먼저 'student' 테이블의 모든 레코드를 조회하는 간단한 저장 프로시저를 만들어 보겠습니다.
mysql> delimiter //
mysql> create procedure AllRecords()
-> begin
-> select *from student;
-> end //
Query OK, 0 rows affected (0.24 sec)
저장 프로시저 호출하기
생성된 저장 프로시저는 CALL 명령어를 통해 호출할 수 있습니다.
mysql> delimiter ;
mysql> call AllRecords();
실행 결과는 다음과 같습니다.
+------+-------+
| id | Name |
+------+-------+
| 1 | John |
| 2 | Bob |
| 3 | Smith |
| 6 | John |
+------+-------+
4 rows in set (0.14 sec)
Query OK, 0 rows affected (0.18 sec)
프로시저 정의 확인하기
이제 앞서 소개한 SHOW CREATE PROCEDURE 구문을 사용해 프로시저의 정의를 확인할 수 있습니다.
mysql> show create procedure AllRecords;
출력 결과는 다음과 같습니다.
+------------+--------------------------------------------+-----------------------------------------------------------------------+----------------------+----------------------+--------------------+
| Procedure | sql_mode | Create Procedure | character_set_client | collation_connection | Database Collation |
+------------+--------------------------------------------+-----------------------------------------------------------------------+----------------------+----------------------+--------------------+
| AllRecords | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | CREATE DEFINER=`root`@`%` PROCEDURE `AllRecords`() begin select *from student;end | utf8 | utf8_general_ci | utf8mb4_unicode_ci |
+------------+--------------------------------------------+-----------------------------------------------------------------------+----------------------+----------------------+--------------------+
1 row in set (0.00 sec)
결과를 보면 프로시저 이름뿐만 아니라 sql_mode 설정, 전체 CREATE 문, 클라이언트 문자셋, 연결 콜레이션, 데이터베이스 콜레이션까지 한 번에 확인할 수 있습니다. 이를 통해 해당 프로시저가 어떤 환경 설정으로 생성되었는지 파악하는 데 큰 도움이 됩니다.
저장 함수 정의 확인하기
저장 함수(Stored Function)의 정의를 확인할 때는 PROCEDURE 대신 FUNCTION 키워드를 사용하면 됩니다. 문법은 다음과 같습니다.
SHOW CREATE FUNCTION yourFunctionName;