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

MySQL에서 특정 데이터베이스의 저장 프로시저 목록과 전체 정보를 확인하는 방법

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 조회를 대체하는 표준적인 방법으로 권장됩니다.