13.7.5.28 SHOW PROCEDURE CODE 구문
SHOW PROCEDURE CODE proc_name
이 문은 디버깅 지원으로 구축 된 서버에서만 사용 가능한 MySQL 확장입니다. 이것은 지정된 저장 프로 시저의 내부 구현의 표현을 표시합니다. 비슷한 문이다 SHOW FUNCTION CODE
는 저장 기능에 대한 정보를 표시합니다 ( 섹션 13.7.5.20 "SHOW FUNCTION CODE 구문" 을 참조하십시오).
두 문을 사용하여도이 일상의 소유자이거나 mysql.proc
테이블에 대한 SELECT
권한을 가지고 있어야합니다.
지정된 루틴이 사용 가능한 경우 각 문은 결과 집합을 생성합니다. 결과 집합의 각 행이 일상에서 하나의 '명령'에 해당합니다. 첫 번째 컬럼은 0으로 시작 순서 번호이다 Pos
입니다. 두 번째 열은 Instruction
이며, SQL 문 (보통은 원본에서 변경되어 있습니다) 또는 스토어드 루틴의 핸들러에서만 의미를 가지는 지시문이 포함되어 있습니다.
mysql>DELIMITER //
mysql>CREATE PROCEDURE p1 ()
->BEGIN
->DECLARE fanta INT DEFAULT 55;
->DROP TABLE t2;
->LOOP
->INSERT INTO t3 VALUES (fanta);
->END LOOP;
->END//
Query OK, 0 rows affected (0.00 sec) mysql>SHOW PROCEDURE CODE p1//
+-----+----------------------------------------+ | Pos | Instruction | +-----+----------------------------------------+ | 0 | set fanta@0 55 | | 1 | stmt 9 "DROP TABLE t2" | | 2 | stmt 5 "INSERT INTO t3 VALUES (fanta)" | | 3 | jump 2 | +-----+----------------------------------------+ 4 rows in set (0.00 sec)
이 예에서는 실행 불가능한 BEGIN
및 END
문이 사라지고 있으며, DECLARE
문은 실행 파일의 부분 (기본값이 할당 된 부분) 만 표시되어 있습니다. 소스에서 검색된 문에 대한 코드 워드 variable_name
stmt
와 거기에 계속되는 유형 ( DROP
을 나타내는 9 INSERT
를 나타내는 5 등)이 존재합니다. 마지막 줄은 GOTO instruction #2
를 나타내는 명령 jump 2
가 포함되어 있습니다.