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 アクセス権を持っている必要があります。

指定されたルーチンが使用可能な場合、各ステートメントは結果セットを生成します。結果セット内の各行は、このルーチン内の 1 つの命令に対応します。最初のカラムは、0 で始まる順序番号である Pos です。2 番目のカラムは 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 が含まれています。


User Comments
Sign Up Login You must be logged in to post a comment.