mysql.proc 테이블로 저장 프로시저 정보 조회하기
MySQL에서는 mysql.proc 시스템 테이블을 조회하여 특정 데이터베이스에 등록된 저장 프로시저(Stored Procedure)의 목록과 함께 이름, 정의자, 생성 일시, 본문(body) 등 상세 정보를 한 번에 확인할 수 있습니다.
아래 쿼리는 'query'라는 데이터베이스에 속한 모든 저장 프로시저의 전체 정보를 세로 형태(\G 옵션)로 출력하는 예제입니다.
mysql> Select * from mysql.proc where db = 'query' AND type = 'PROCEDURE' \G
*************************** 1. row ***************************
db: query
name: allrecords
type: PROCEDURE
specific_name: allrecords
language: SQL
sql_data_access: CONTAINS_SQL
is_deterministic: NO
security_type: DEFINER
param_list:
returns:
body: BEGIN
Select * from Student_info;
END
definer: root@localhost
created: 2017-11-11 09:56:11
modified: 2017-11-11 09:56:11
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
comment:
character_set_client: cp850
collation_connection: cp850_general_ci
db_collation: latin1_swedish_ci
body_utf8: BEGIN
Select * from Student_info;
END
1 row in set (0.00 sec)주요 출력 항목 설명
- db: 프로시저가 속한 데이터베이스의 이름입니다.
- name / specific_name: 저장 프로시저의 이름입니다.
- type: 객체 유형을 나타내며, 여기서는 'PROCEDURE'입니다.
- body: 프로시저의 실제 SQL 코드 본문으로, 어떤 작업을 수행하는지 확인할 수 있습니다.
- definer: 해당 프로시저를 생성한 사용자 계정입니다.
- created / modified: 프로시저가 생성된 시각과 마지막으로 수정된 시각입니다.
- sql_mode: 프로시저 생성 당시 적용되었던 SQL 모드 설정입니다.
참고: MySQL 8.0 이상 버전 사용 시
mysql.proc 테이블은 MySQL 5.7부터 폐기(deprecated)되었으며, MySQL 8.0부터는 완전히 제거되었습니다. 최신 버전에서는 아래와 같은 방법을 사용하는 것이 좋습니다.
1. SHOW 문법 활용
SHOW PROCEDURE STATUS WHERE Db = 'query';
이 명령은 프로시저의 이름, 정의자, 생성·수정 일시 등 기본 정보를 보여줍니다.
2. information_schema.ROUTINES 조회
SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = 'query' AND ROUTINE_TYPE = 'PROCEDURE' \G
이 방식은 프로시저의 본문(ROUTINE_DEFINITION)을 포함한 상세 정보까지 확인할 수 있어, 기존 mysql.proc 조회를 대체하는 표준적인 방법으로 권장됩니다.