MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
SHOW PROCEDURE CODE proc_name
このステートメントは、デバッグサポート付きで構築されたサーバーでのみ使用可能な MySQL 拡張です。 これは、指定されたストアドプロシージャーの内部実装の表現を表示します。 同様のステートメントである SHOW FUNCTION CODE は、ストアドファンクションに関する情報を表示します (セクション13.7.7.19「SHOW FUNCTION CODE ステートメント」を参照してください)。
いずれかのステートメントを使用するには、ルーチン DEFINER として指定されたユーザーであるか、SHOW_ROUTINE 権限を持っているか、グローバルレベルの SELECT 権限を持っている必要があります。
指定されたルーチンが使用可能な場合、各ステートメントは結果セットを生成します。 結果セット内の各行は、このルーチン内の 1 つの「命令」に対応します。 最初のカラムは、0 で始まる順序番号である Pos です。 2 番目のカラムは Instruction であり、SQL ステートメント (通常は、元のソースから変更されています)、またはストアドルーチンのハンドラに対してのみ意味を持つディレクティブが含まれています。
mysql>DELIMITER //mysql>CREATE PROCEDURE p1 ()BEGINDECLARE fanta INT DEFAULT 55;DROP TABLE t2;LOOPINSERT INTO t3 VALUES (fanta);END LOOP;END//Query OK, 0 rows affected (0.01 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) mysql>CREATE FUNCTION test.hello (s CHAR(20))RETURNS CHAR(50) DETERMINISTICRETURN CONCAT('Hello, ',s,'!');Query OK, 0 rows affected (0.00 sec) mysql>SHOW FUNCTION CODE test.hello;+-----+---------------------------------------+ | Pos | Instruction | +-----+---------------------------------------+ | 0 | freturn 254 concat('Hello, ',s@0,'!') | +-----+---------------------------------------+ 1 row in set (0.00 sec)
この例では、実行不可能な BEGIN および END ステートメントが消えており、DECLARE ステートメントでは、実行可能ファイルの部分 (デフォルトが割り当てられている部分) のみが表示されています。 ソースから取得されたステートメントごとに、コードワード variable_namestmt とそれに続くタイプ (DROP を示す 9、INSERT を示す 5 など) が存在します。 最終行には、GOTO instruction #2 を示す命令 jump 2 が含まれています。