DFU, Query, SQL

48. (4) SQLプログラムの開発方法と種類

SQLに関連したプログラムを開発しようとすると実は様々な手法がある。
それらの違いをここで説明しておこう。

・組込みSQLプログラミング

組込みSQLプログラミングとは RPGCOBOL, C言語のソースの中に
SQL命令文を組み込んでコンパイルする手法である。
以前にも説明したがSQLはすべて QSQROUTE というAPIによって
処理されるのだが QSQROUTE に対してどのようにパラメータを
与えるのかが難しい。
そこで RPGC言語などに組み込んでコンパイルすると
QTEMPのソース・ファイルに QSQROUTE を使ったソースに展開してから
さらにコンパイルするという手法をIBMが提供している。

組込みSQLプログラミングのコンパイルは CRTBNDRPGCRTRPGMOD ではなく
CRTSQLRPGI によってコンパイルする。

・SQL CLIプログラミング

 

SQLには CLI(=Call Level Interface)というAPIも用意されていて
これらを利用するSQL開発が SQL CLIプログラミングである。
これらを使用するには SQL CLIAPIマニュアルに精通している必要がある。
組込み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は対象が画面ファイルだけである)
レコードを更新したりすることはできない。
しかしSQLUPDATE/INSERT/DELETE命令を使えば
CLPでもデータ・ベースを更新することができるようになる。