SHOW PROCEDURE CODE proc_name
このステートメントは、デバッギングサポートとともに構築されたサーバーでのみ使用可能な
MySQL
の拡張機能です。このステートメントは、指定されたストアドプロシージャーの内部実装の表現を表示します。同様のステートメントである
SHOW FUNCTION
CODE
は、ストアドファンクションに関する情報を表示します
(項8.5.5.20. 「SHOW FUNCTION CODE 構文」 を参照)。
どちらのステートメントでも、このルーチンの所有者であるか、または
mysql.proc
テーブルに対する
SELECT
アクセス権を持っていることが必要です。
もし名づけられたルーチンが有効なら、各ステートメントは結果セットを作成します。結果セット内の各行は、ルーチン内の
1 つの 「instruction」
に対応します。最初のカラムは、0
で始まる序数 Pos
です。2 つめのカラムは、SQL
ステートメントや
(通常元のソースから変更されたもの)
ストアドルーチンヘッダーに対してだけ意味を持つコマンドを含む
Instruction です。
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_namestmt があります。(9
は DROP、5 は
INSERT
を意味する、という感じのものです)。最終行は、GOTO
instruction #2 という意味を持つ
jump 2
指示を含んでいます。
これらのステートメントは、MySQL 5.1.3 で追加されました。
