SQLスクリプト実行中にprint文のようにメッセージを表示する方法
SQLスクリプトを実行している最中に、処理の進捗や状態を画面に表示(エコー)したいケースはよくあります。MySQLでは、SELECT文を使うことで、print文のようなメッセージ出力を簡単に実現できます。
基本構文
メッセージを表示するための基本的な構文は次のとおりです。
SELECT '任意の文字列';
実際の実行例
具体的には、以下のように記述します。
mysql> SELECT 'This is a SQL Script' AS '';
実行結果:
+----------------------+ | | +----------------------+ | This is a SQL Script | +----------------------+ 1 row in set, 1 warning (0.00 sec)
concat()関数で動的なデータを表示する
INSERT、UPDATE、DELETEなどの処理結果を含む動的な情報を表示したい場合は、CONCAT()関数とROW_COUNT()関数を組み合わせると便利です。
mysql> SELECT CONCAT("Inserted ", ROW_COUNT(), " rows successfully") AS '';
実行結果:
+-------------------------------+ | | +-------------------------------+ | Inserted -1 rows successfully | +-------------------------------+ 1 row in set (0.00 sec)
注意点:ROW_COUNT()の戻り値について
上記の出力例で「-1」と表示されているのは、直前にINSERTなどの更新系クエリを実行していないためです。ROW_COUNT()は「直前に実行したステートメントで変更された行数」を返す関数であり、SELECT文に対しては-1を返す仕様になっています。
したがって、実際に挿入・更新・削除を行うステートメントの直後にこの関数を呼び出せば、正しく影響を受けた行数を取得し、メッセージとして表示することができます。
このように、SELECT文とCONCAT()関数を活用すれば、ストアドプロシージャやバッチスクリプトの中でも、ログ出力のように処理状況を確認しながらSQLスクリプトを実行できるようになります。デバッグや長時間のバッチ処理の進捗管理にぜひ役立ててください。
-
シェルトレース活用ガイド:シェルスクリプトのコマンド実行をトレースしてデバッグする方法
シェルスクリプトデバッグシリーズの本記事では、3つ目のデバッグモードであるシェルトレース(shell tracing)について解説します。具体的な例を通じて、その仕組みと実際の使い方を見ていきましょう。 シリーズの前回までの記事では、残り2つのデバッグモードであるverboseモードと構文チェックモードについて、わかりやすい例とともにシェルスクリプトのデバッグを有効化する方法を紹介しました。 Linuxでシェルスクリプトのデバッグモードを有効にする方法 – Part 1 シェルスクリプトで構文チェックによるデバッグを行う方法 – Part 2 シェルトレースとは何か シェルトレースとは、シ
-
MacBookで印刷する方法|USB・Wi-Fi接続の手順と印刷設定をわかりやすく解説
MacBookでの印刷はとても簡単です。プリンターをUSBまたはWi-Fiで接続し、ほとんどのアプリで「command + P」を押すだけで印刷できます。 筆者は2019年製MacBook Proのユーザーであり、Macの専門家として、Wi-Fi経由でもUSB接続でも日常的に印刷を行っています。このガイドでは、その具体的な手順をわかりやすくご紹介します。それでは始めましょう。 MacBookで印刷する基本手順 MacBookからの印刷はシンプルで、それほど時間もかかりません。まずは、プリンターをMacBookに接続してセットアップする必要があります(おすすめのMac対応プリンターについて