DB2 for i でSQLプロシージャについて調べたので備忘録に残しておきます。
この記事ではそのサブプロシージャでどんな処理が行われているのか、ソース文を確認する方法について記載しています。
ドマイナーな情報で悪しからず。
- 検証した環境
- SQLプロシージャのソース文はグリーンスクリーンでは確認できなそう
- IBM i Access Client Solutionsを使うと確認できる
- ACSでSQLプロシージャのソースを確認する手順
- 終わりに
検証した環境
- IBM i 7.3
- IBM i Access Client Solutions(ACS) 64bit バージョン1.1.9.1
SQLプロシージャのソース文はグリーンスクリーンでは確認できなそう
ネットの海やChatGPT、公式のドキュメントなど、色々当たってみましたが、グリーンスクリーンでSQLプロシージャを作成したソース文を確認する方法は見つかりませんでした。
ソース文とは少し違いますが、プロシージャのパラメータに関する情報はQSYS2.SYSPARMS テーブルに格納されていることがわかりました。
そのプロシージャが格納されているライブラリとプロシージャ名から検索することができます。
SELECT * FROM QSYS2.SYSPARMS WHERE SPECIFIC_SCHEMA='LIBの名前' AND SPECIFIC_NAME='プロシージャ名'
ちなみに、「下記のSQLでSQLプロシージャの定義が確認できるよ!」とChatGPT(無料版)から教えて頂きましたが、ROUTINE_DEFINITIONにはCREATE文は入っておりませんでした。何か環境の違いでしょうか、それとも私の理解が追いついていないだけでもっと掘り下げることができるのか・・・。
SELECT ROUTINE_DEFINITION FROM QSYS2.SYSROUTINES
まとまった情報がなく、本当にグリーンスクリーンではオブジェクトからソースを確認することができないのかもよくわからないところではありますが、ここまでの情報では難しそうです。
グリーンスクリーンだけでSQLプロシージャの中身を確認できるようにするには、CREATE文を書いたソースファイルをRUNSQLSTMコマンドで実行し、ソースはソース、オブジェクトはオブジェクトで管理することになる・・・ような気がします。
IBM i Access Client Solutionsを使うと確認できる
上述した通り、グリーンスクリーンだけではSQLプロシージャのソース文は確認できなさそうです。
しかし、IBM i Access Client Solutions(ACS)を使うとソース文の全体ではありませんが、BEGIGN~ENDで囲まれた処理の本体が確認できることがわかりました。
ACSでSQLプロシージャのソースを確認する手順
以下はACSのバージョンによって違いはあるかと思いますが、確認の手順です。
- データベース⇒スキーマ⇒スキーマのウィンドウが開く
- スキーマのウィンドウでプロシージャが格納されているデータベースをクリックする
- スキーマからライブラリをクリックする
- 左ペインのプロシージャーをクリックする
- 右ペインで確認したいプロシージャをクリックする
- ウィンドウがひらくのでルーチン本体タブをクリックするとソース文が表示される
試してはいませんが、どうやらソースの編集も可能な様子。
終わりに
ACSを使うことでオブジェクトだけあれば処理内容が確認できるのでソース文の管理が不要になるのがうれしいところですね。
といってもACSがいつまでサポートされるかもわからないので油断はできません。
念のためCREATE時のソースファイルは残しておいた方がよさそうな気がします。
というわけで非常に簡単で恐縮ですが、以上になります。
ここまでお読みいただきまして、ありがとうございました。