SQLに関連したプログラムを開発しようとすると実は様々な手法がある。
それらの違いをここで説明しておこう。
・組込みSQLプログラミング
組込みSQLプログラミングとは RPGやCOBOL, C言語のソースの中に
SQL命令文を組み込んでコンパイルする手法である。
以前にも説明したがSQLはすべて QSQROUTE というAPIによって
処理されるのだが QSQROUTE に対してどのようにパラメータを
与えるのかが難しい。
そこで RPGや C言語などに組み込んでコンパイルすると
QTEMPのソース・ファイルに QSQROUTE を使ったソースに展開してから
さらにコンパイルするという手法をIBMが提供している。
組込みSQLプログラミングのコンパイルは CRTBNDRPG や CRTRPGMOD ではなく
CRTSQLRPGI によってコンパイルする。
・SQL CLIプログラミング
SQLには CLI(=Call Level Interface)というAPIも用意されていて
これらを利用するSQL開発が SQL CLIプログラミングである。
これらを使用するには SQL CLIのAPIマニュアルに精通している必要がある。
組込みSQLプログラミングではできない動的なSQLの実行にも
柔軟に対応することができる。
・SQL CLPプログラミング
Ver7.1 から使えるRUNSQLコマンドを使ってCLPからもSQL命令を
実行することができるようになっている。
ただし SELECT文を使うことはできない。
また SQL命令が使える、と言っても
SQL文 | IBM iコマンド |
---|---|
CREATE TEBLE | CRTPF |
CREATE VIEW | CRTLF |
DROP | DLTPGM |
: | : |
のようにIBM i のユーザーであればわざわざRUNSQLを使う必要のない
SQL命令ばかりである。
これはまだIBM iに不慣れなオープン系からの参入者のために
用意された機能であろう。
ただ唯一価値を見出すとすれば CLPでデータ・ベースを
更新できる機能を提供していることである。
CLP では DCLF でデータ・ベースを宣言して
RCVF でレコードを読取ることはできるが SNDF でレコードを
出力したり(SNDFは対象が画面ファイルだけである)
レコードを更新したりすることはできない。
しかしSQLの UPDATE/INSERT/DELETE命令を使えば
CLPでもデータ・ベースを更新することができるようになる。