初心者の憂鬱:DataWindowから送信されているSQLはどうなっているの?

初心者の憂鬱

遅くなりましたが、あけましておめでとうございます。サポート部の Yama-chan です。2020年の今年はいろんな意味で節目の年で、PowerBuilder も今は英語版のみですが、今までのデスクトップアプリケーションの開発機能を強化しながら、新しく WebAPI を簡単に開発できる IDE もリリースされています。2020 TOKYO オリンピックも開催されますので、大変な一年そして有意義な一年になりそうです。私も引き続きいろんな疑問を解決しながら、一人前のビルダーを目指して成長して参りたい所存でございます。どうぞ、よろしくお願いいたします。


はじめに

PowerBuilder のどこがいいんですかと先輩ビルダーに聞くと、決まって

「そりゃ、DataWindow しかないだろう!、PowerBuilder の DataWindow がすごいよ」

という回答が返ってきます...

PowerBuilder の DataWindow はデータベースへのアクセス機能が強力らしく、データベースペインタ上でビジュアルに操作することができます。しかも SQL の構文を知らなくても簡単に利用できます。

なるほど...でも、気になります...

SQL の構文については少し理解しているので...DataWindow がデータベースとのやり取りでどのような SQL 文を送信しているのか?気になるところです。気になりだすと調べたくなるたちなので、いろいろと調べました。どうやらデバッグモードで実行した場合、SQLPreview イベントでブレークポイントを入れると、実行された SQL 文が確認できます。


準備

デフォルトでは DataWindow コントロールの SQLPreview イベントにコードの記述がないので、ブレークポイントを入れることができません。そこでブレークポイントを入れるためにイベント内に下記のようなコードを追加します。

integer li_cnt
li_cnt = 0

皆さんも上記のコードを見れば、すでにお分かりでしょう。[ li_cnt = 0 ] 行のところにブレークポイントを入れています。


確認

データベースへのアクセスが発生すると、設定したブレークポイントの所で止まります。早速 DataWindow の Retrieve() 関数が実行された時の SQL 文を確認してみましょう。

デバッグ画面

赤い枠で囲まれている部分の「sqlsyntax」に SQL 文が格納されています。その行をマウスで右クリックし、ポップアップ表示されているメニューから「変数の編集」を選択すると、下記のような詳細画面が表示されます。

変数値の変更画面

ちょっと見づらいので、新しい値の内容をコピーして、他のエディターで表示してみましょう。下図をご参照ください。

整形済SQL文

このサンプルはシンプルなものですが、JOIN などを多用して複雑な SQL 文の場合は整形するとかなり見やすくなります。

データベースのアクセスで予想と違う結果になった場合、この方法で SQL 文を確認することができます。またデータベースからの応答が遅い場合でも同様に発行されている SQL 文を確認し、最適化を図りパフォーマンスのチューニングにも役に立ちます。状況により、データベース側でどのような SQL 文を受け取ったかについても確認する必要があります。その場合はデータベース側のトレースツールを使用して確認するとよいでしょう。


まとめ

今回は DataWindow とデータベース間のやり取りで実行されている SQL 文の確認方法について紹介しました。SQL の勉強にもなりますので、皆さんもぜひやってみてください。

世界中のビルダーを目指している皆さんが大活躍できますよう、そして素晴らしい一年になりますよう心から祈っております!!

テクニカルブログ 一覧を見る
PowerBuilder マイグレーション