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で公開している。