SQL Selectでソースメンバーを指定できませんか?
Question
SQLを用いてプログラムソースの抽出を行いたいと思います。
しかし例えば、
select * from LIB.SRC(MEMBER)
のように指定をした場合、エラーとなってしまいます。
なぜこのようなエラーとなるのかも、いまいち分かりません。
IBM i のSQL Select句ではファイルのメンバーを指定出来ないのでしょうか?
Answer
お試しいただいたように、実はIBM i のSQLにはちょっとした罠があります。
この分かりにくいメッセージの意図をくみ取ると、LIB.SRCの後の( )を判別できない事を表しています。
解決方法として「このメンバー名の指定をしているひと纏まり」に、別の名前を付けることで認識できるようになります。
厳密には少々異なりますが、この名前付けを"エイリアス"と呼びます。
ここでは例として「LIB:PANDA320にあるSRC:QCLSRCのMBR:WEEKLYBKUP」にSRCMBRという名前を付けてSQLで内容を表示させてみましょう。
CREATE ALIAS PANDA320.SRCMBR FOR PANDA320.QCLSRC (WEEKLYBKUP)
名前付けをしたら、後はいつも通りのSQLを実行するだけです。
このようにファイルの中のメンバーを指定した上で、SELECT文が実行できました。
実は以前より弊社の情報提供サイトe-bellnetでもこの一連の操作を踏まえたうえで、重複ソースコードを検索する方法を紹介している海外記事の翻訳を公開しておりましたが、少々文書量も多く本題に入るまでのウィットに富んだトークもあり、敬遠されてしまって内容をご存じ無い方もいらっしゃるだろうと、改めてご案内させていただきました。
参考:SQLを使用して重複ソースコードを検索する
https://www.e-bellnet.com/category/jungle/1805/1805-542.html
今回のこのエイリアス化(名前付け)を踏まえて、活用手段の一つとして、海外記事についても必要箇所を引っ張って読んでいただくと、今まで出来ないと思っていたことが出来るようになるかもしれません。
by . 大熊猫橋