개요
MySQL에서는 INFORMATION_SCHEMA.ROUTINES 테이블을 활용하면 특정 데이터베이스에 존재하는 저장 프로시저(Stored Procedure) 목록만 손쉽게 확인할 수 있습니다. 이 테이블에는 해당 MySQL 서버에 등록된 모든 저장 프로시저와 저장 함수의 정보가 담겨 있기 때문에, 조건을 적절히 지정하면 원하는 결과만 추출할 수 있습니다.
저장 프로시저 목록 조회 쿼리
아래와 같이 INFORMATION_SCHEMA.ROUTINES를 조회하되, ROUTINE_SCHEMA 조건으로 대상 데이터베이스를 지정하고, ROUTINE_TYPE = 'PROCEDURE' 조건을 추가하면 저장 프로시저만 필터링됩니다.
mysql> SELECT ROUTINE_TYPE, ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = 'query' AND ROUTINE_TYPE = 'PROCEDURE';
실행 결과 예시
'query'라는 이름의 데이터베이스에 대해 위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+--------------+------------------------+ | ROUTINE_TYPE | ROUTINE_NAME | +--------------+------------------------+ | PROCEDURE | allrecords | +--------------+------------------------+ 1 row in set (0.05 sec)
결과에서 볼 수 있듯이 'query' 데이터베이스에는 allrecords라는 이름의 저장 프로시저 하나가 등록되어 있습니다.
참고 사항
ROUTINE_SCHEMA: 프로시저가 속한 데이터베이스(스키마)의 이름입니다.ROUTINE_TYPE: 'PROCEDURE'는 저장 프로시저를, 'FUNCTION'은 저장 함수를 의미합니다. 저장 함수 목록을 보고 싶다면 이 값을 'FUNCTION'으로 변경하면 됩니다.- SHOW 문을 사용하는
SHOW PROCEDURE STATUS WHERE Db = '데이터베이스명';방법도 있지만, INFORMATION_SCHEMA를 조회하는 방식이 더 세밀한 조건 검색과 정렬에 유리합니다.