DFU, Query, SQL

8. Query のソースを抽出するには?

STRQRY のメニューの中の QUERY 管理機能というものは眼にしたことはあるかもしれない。

「管理機能」 という名前が、誤解を招いているのだがこれは *QMQRY という SQLオブジェクトを

生成する機能である。

QUERY 管理機能の RTVQMQRY コマンドを使えば既存の Query/400 オブジェクトから SQL文を抽出できる。

(SELECT文)

  • RTVQMQRYSQL文を QUERY/400 から抽出
  • CRTQMQRY*QMQRY オブジェクトを生成(コンパイル)
  • STRQMQRY*QMQRY オブジェクトを実行
【 例 】
RTVQMQRY    QMQRY(MYLIB/MYQRY)    SRCFILE(QTRSRC/QQMQRYSRC)  ALWQRYDFN(*ONLY)

*QMFORM を指定すれば Query/400 の印刷書式も抽出できる。

ただし、STRQMQRY の実行結果が元の QUERY と全く同じかというとそうでもない。

*QMQRY は SAA 準拠のため 編集コードなどをサポートしていないからである。

しかし、*QMQRYSQL としての機能を十分備えている。

SQL の UPDATE 文,INSERT 文,DELETE 文が実行できるのだ。

SQL が導入されていない AS/400 であっても *QMQRY によって動的なデータベースの更新ができる。

しかも RPG よりも圧倒的に速い速度でである。

QUERY と同じ操作でデータベースを更新できる PANEL-WORKER の 「更新QUERY」 は 内部では

この *QMQRY によって更新している。

「更新QUERY」 は あるユーザーの 「QUERY でデータベースを更新できないか?」 の一言で始まった。

今では最も使用されている機能である。