DFU, Query, SQL

56. 対話式SQLとは

IBM i のライセンス・プログラムの中に対話式SQLというのが
あるが結構高価であるので導入されていないユーザーも多い。

 

対話式SQLとはSQLの操作テストを行うための
SQL学習用の環境である。

つまり対話式SQLを使ってSQLの適用業務を開発するということは
あり得ない。
SQL文を対話式SQL環境で実行してみて自分が作ったSQL文が
正しいのかやどのような動作結果が得られるのかを
確認するための環境である。

対話式SQLが導入されていないとSQLは使えないと誤解されている
IBMユーザーも多いようなので明確にしておきたいのは

すべてのIBM iでSQLは使用可能である。

ということである。
SQLを実行しているのはただひとつのAPI: QSQROUTE という
APIでこれはどのIBM iにも当然導入されているので
すべてのIBM iでSQLは使用可能であるということになる。

SQLとはIBMが最初に開発したデータ・ベース検索ツールであるが
IBM iの場合は Query/400が非常に簡単なので
SQLを学習しなくてもSQLの機能を使えてしまうのだ。
Queryの内部にはSQL文が同梱されている。
それが証拠にQueryに対して

RTVQMQRY でQUERY内部のSQL文を抽出することができる。

SQL文は簡単な構文でデータ・ベースの検索に役に立つことは
間違いないのだが IBM のSQLのマニュアル、特にSQL解説書には
例がほとんどなく非常にわかりづらい。
SQL構文の解説は別の機会に譲ることとしてSQLは
どのような適用業務に利用されているのか紹介する。

・Query/400

ご存知のQueryであってプログラムを書けない人であっても
Queryなら簡単に使うことができる。
内部にはSQL文が埋め込まれているのがQueryである。

・QMQRY

Queryからは RTVQMQRYによってQMQRYのソースを抽出することが
できる。QMQRYの場合はQMFORMという書式も用意されている。

・ODBCドライバー

クライアント(PC)からIBM iのデータ・ベースをアクセスするために
提供されているのがODBCドライバである。
SQL文をODBCドライバに投げると抽出されたデータが戻ってくる。

・ストアド・プロシージャー

SQL文の実行時間を短縮するためにSELECTによるアクセス・パスの結果を
登録しておくのがストアド・プロシージャーである。
AutoWebのポップアップ・ウィンドウがプログラムよりも
異常に速く実行されるのはストアド・プロシージャーとして
内部で登録されているからである。

・RUNSQLSTM

ソースにSQL文を登録しておいてそのソースからSQLを実行するのが
RUNSQLSTM(SQL ステートメントの実行)コマンドである。
対話式SQLがライセンス・プログラムであるのでいちいちソースに
SQLを登録して実行するような仕組みは苦肉の策と言えるだろう。

・RUNSQL

OS Ver7.1からは動的にその場でSQL文を実行することができるという
RUNSQLコマンドが追加された。
しかしこのRUNSQLコマンドはSELECT文を実行することはできない。
㈱オフィスクアトロではSELECT文も実行できるRUNSQLコマンドを作成して
このサイトのToolsで公開している。