変数値をデバッグ テーブルに挿入するのは簡単な方法ですが、MySQL ストアド プロシージャをデバッグするより効率的な方法があります。この記事では、デバッグ メッセージをコンソールに記録するためのカスタム プロシージャを活用する別のアプローチについて説明します。
次に示す debug_msg プロシージャを使用すると、デバッグ メッセージを条件付きでコンソールに出力できます。
<code class="sql">DELIMITER $$ DROP PROCEDURE IF EXISTS `debug_msg`$$ DROP PROCEDURE IF EXISTS `test_procedure`$$ CREATE PROCEDURE debug_msg(enabled INTEGER, msg VARCHAR(255)) BEGIN IF enabled THEN select concat('** ', msg) AS '** DEBUG:'; END IF; END $$ CREATE PROCEDURE test_procedure(arg1 INTEGER, arg2 INTEGER) BEGIN SET @enabled = TRUE; call debug_msg(@enabled, 'my first debug message'); call debug_msg(@enabled, (select concat_ws('','arg1:', arg1))); call debug_msg(TRUE, 'This message always shows up'); call debug_msg(FALSE, 'This message will never show up'); END $$ DELIMITER ;</code>
このプロシージャを利用するには、次のようにストアド プロシージャ内で呼び出します。
<code class="sql">CALL test_procedure(1,2)</code>
上記のコマンドを実行すると、次の出力が生成されます。
** DEBUG: ** my first debug message ** DEBUG: ** arg1:1 ** DEBUG: ** This message always shows up
明らかなように、このアプローチにより、デバッグ テーブルの作成や挿入のオーバーヘッドなしでデバッグ メッセージを簡単に表示できます。
以上がカスタム ロギング プロシージャを使用して MySQL ストアド プロシージャを効率的にデバッグするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。