IBM i 7.6発表時点でのVS Code用Db2 for i エクステンションについての記載です。
特筆すべき機能、としてノートブックのサポートを挙げています。
ノートブックには以下のような、SQL コード、CL コマンド、マークダウンを 1 つの統合ビューから記述できます。
- SQL クエリを即座に作成・実行
- 再利用可能なスクリプトとワークフローガイドの作成
- マークダウンを使用してワークフローとプロセスをステップごとにドキュメント化
Db2 for i のVS CodeエクステンションはVSCodeの拡張機能 → IBM i Development Pack(Code4i) の一部としてインストールされます。
SQL プロセッサー
Db2 for i 拡張機能はスクリプト内で SQL 文だけでなく CL コマンドも実行できます。JSON、CSV、生の SQL など、複数の出力プロセッサーから選択可能で、VS Code 内で結果の表示方法や使用方法を制御できます。下記の例のようにステートメントの冒頭に出力プロセッサーのタイプを指定できます。
-- result set as normal table
select * from sample.employee;
-- result set as JSON, will open in a new file
json: select * from sample.employee;
-- result set as CSV, will open in a new file
csv: select * from sample.employee;
-- result set as SQL insert statement
sql: select * from sample.employee;
-- run CL commands. output is directed to IBM i output channel
cl: dspffd sample/employee
ちょっと実行してみました。
普通にSQLを実行
SELECT * FROM DEMOLIB.TOKMSP
JSON形式で出力
json: select * from DEMOLIB.TOKMSP
csv形式で出力
csv: select * from demolib.tokmsp
元テーブルへのINSERT文を生成
sql: select * from sample.employee;
別タブが開きます。元テーブルのレコード数は210行ですが、42行だけでした。返す行数の制御はどうなっているのか?後ほど調べてみます。
CLコマンドを実行
DSPFFDコマンドでカラム情報他を表示。ここではOUTPUT(*PRINT)を指定してみました。
cl: DSPFFD DEMOLIB/TOKMSP OUTPUT(*PRINT)
すると、OUTQに
DSPFFDの結果スプールがデフォルト出力先のOUTQに生成されました。
SQLエラー・ロギング機能 (SQL Error Logging Facility : SELF)
IBM i で実行させたSQLのエラーほかのメッセージID,説明を表示してくれます。IBM i パネルに表示されます。
この機能を使用するには、IBM i OSでSYSIBMADM.SELFCODESグローバル変数を有効化(作成)し、その後、必要ならばVSCodeでログするSQLコードや対象(エラーだけ、警告含む、正常完了含む等)を SYSIBMADM.SELFCODESの属性を変更します。
IBM i 7.6では個別のSQLステータスコード(SQL0403のような)以外に以下のような設定ができます。
*ERROR : エラー状態(負の値) のすべてを表示
*WARN : 警告状態 (正の値) "
*ALL : エラーまたは警告状態 ”
*NONE : SELFをオフ(エラー表示しない)
参考:SQL Error Logging Facility (SELF)
https://www.ibm.com/docs/en/i/7.6.0?topic=tools-sql-error-logging-facility-self
上記参考リンクを読みますと、SELFは基本的にはパフォーマンス上の懸念も極小化できるので本番環境で使用しても基本大丈夫(な事が多いはずである)、という記載もあります。
SQLエラー・ロギング機能(SELF)の設定確認方法
VSCodeで、ファイル → ユーザー設定 → 拡張機能 から Db2 for IBM i を探します。Db2 for i の中に SQL Error Logging Facility(SELF) の項目があり、設定の確認・変更が可能です。
上記の例ではSELFの対象をすべての*ALL SQL結果コードとしています。
以下ではテストをしてみます。存在しないカラム名を指定しています。
Visual Explainを実行できる
VSC内でVisual Explainを実行できます。SQL文を選択して、実行ボタンを押して Run and explain statementを選択します。
上記の例は select * all でちょっとイマイチですが(^^;、右下のウィンドウにExplainされたSQLの明細が表示されています。
見やすさはACSスクリプト実行画面の方が上かなあ、な感じですが、表示はクイックで速いと思います。
続く・・