2023年7月31日にリリースした「SI Object Browser for Oracle」の最新バージョン23.1では開発の更なる効率化を目的に、SQL実行画面等の各種エディタ画面にてOpenAI社のChatGPT を使用してSQL整形を実行する機能を追加いたしました。画面入りで詳しくご紹介いたします。
ChatGPT APIによるSQL整形とは?
「SQL整形」とは、SQL文に改行やスペースを加えフォーマットを整える作業です。
例えば、データベース連携するプログラムを開発する際などにSI Object BrowserでSQLを記述してテストし、問題なければフォーマットを整えてプログラムソースに張り付けるといった目的で整形していると思います。従来のバージョンでもSQLの整形を自動整形するSQL整形機能が搭載されていましたが基本的なDMLにしか対応しておらず、複雑なSQLにおいては整形に失敗するケースがありました。
最新バージョンでは、エディタで右クリック時のメニューに「SQL整形(OpenAI利用)」が追加されています。こちらを選択することで、ChatGPTにSQLを送信し、より精度の高いSQL整形が実行できます。
画面1.SQL実行画面
もちろんChatGPTのWebサイトよりSQLを張り付けることで同様に整形も可能ですが、当機能ではSI Object BrowserのSQL実行画面からシームレスにChatGPTを実行できるため、より効率よく実施できます。また、「ツール」メニューの「エディタオプション」→「SQL整形」のオプションにて「カンマの位置を先頭にするか行末にするのか」「大文字小文字にするのか」など、整形方法の細かい指定も可能です。
画面2.SQL整形のオプション画面
ChatGPT版SQL整形の注意点
ご利用に関しては以下の注意点もあります。
インターネット経由でChatGPTにSQLを送信する
インターネットを介してChatGPTにSQLを送信するため、SI Object Browserのインストール端末からインターネットに接続できない環境ではご利用いただけません。
送信したSQLがOpenAI側で学習に利用されることはありません。また、弊社側で送信したSQLを保存することもありません。 |
月あたりの実行回数制限がある
無償でご利用可能できますが、月あたりの実行回数に制限を設けています。制限内容についての詳細は以下のサイトをご覧いただければと思います。
https://products.sint.co.jp/siob/obai-information
これらの注意点があることから、ChatGPT版SQL整形は既定ではOFF(利用不可)となっています。「ツール」メニュー→「オプション画面」>「詳細設定2」タブより「OpenAIを利用したSQL整形を実行可能にする」のチェックボックスをONにすることで利用できるようになります。上記注意点をご確認の上、問題ない場合はONにしてご利用いただければと思います。
画面3.オプション画面(詳細設定2タブ)
SQL整形の例
どのぐらい精度が良くなったかについて、旧バージョン以前にあるSQL整形(以下、「従来版SQL整形」)と、最新バージョンのChatGPTと連携したSQL整形(以下、「ChatGPT版SQL整形」)をいくつかのSQLサンプルで比較してみました。
MERGE文
MERGE文は別名「UPSERT」文とも呼ばれ、データが存在すれば更新(UPDATE)、存在しない場合は追加(INSERT)できるSQLです。従来版SQL整形ではMERGE文に対応しておらず、一部のインデントがずれてしまう問題がありましたがChatGPT版のSQL整形では、問題なく可能となってました。
図1.MERGE文のSQL整形例
CASE句
また、SELECT文等において条件分岐できる「CASE句」が使用できますが、従来版SQL整形ではANDの前に改行され、インデントもCASEより前になってしまっている問題が出ました。ChatGPT版SQL整形では問題なく可能となっています。
図2.CASE句のSQL整形例
PL/SQL(ストアドプログラムのコード)
従来版SQL整形でもIF文などのインデントは可能でしたが、ヘッダにある引数の部分が崩れてしまっていました。ChatGPT版SQL整形ではヘッダの部分も含め問題なく可能となっています。
図3.PL/SQLのSQL整形例
その他、ChatGPT版SQL整形ではサブクエリなどもインデントのずれなどなく整形ができ、かなり精度よくSQLを整形することが可能になりました。ただし、従来版SQL整形よりも実行時間はかかります。最新バージョンで従来版SQL整形を実行することも可能ですので、単純なDMLなどについては従来版SQL整形、複雑なSQLではChatGPT版SQL整形とSQLによって使い分けていただくのがベストとなります。
以上が23.1のChatGPT版SQL整形のご紹介でした。今回はChatGPT API連携の第1弾としてSQL整形を対応しましたが、今後もさらに連携機能を拡充を予定です。ぜひご期待ください!
- カテゴリ:
- 【OBトコ】OBを便利に使おう
- キーワード:
- Oracle