気の向くままに辿るIT/ICT/IoT
SQL用API

ESQL/C Embedded SQL for C

ホーム前へ次へ
ESQL/C Embedded SQL for Cとは?

ESQL/C

ESQL/Cとは

 ESQL/Cは、『Embedded SQL for C』の略でC言語ベースの組み込みSQLであり、SQLServer他、複数のRDBがそれぞれに接続する為の埋め込みタイプのSQL実装方式です。

 ほぼ同じ実装方式にデータベースOracle接続用の埋め込みSQLであるPro*Cがあります。

 ここではSQL ServerにおけるESQL/Cについて触れますが、SQL Server用のプリコンパイラはnsqlprep.exeです。

ESQL/CとSQLの実装/SQL Server

 C言語やその他プログラミング言語においては、一般にSQLをサポートしておらず、静的ライブラリ参照によるプリコンパイル、動的ライブラリやAPI用ドライバを作成することによって実行時に参照する方式などによりSQLを実装しますが、ESQL/Cでは、いわゆる「埋め込みSQL」という手法を利用し、ESQL/Cの書式で書かれたソースファイルをプリコンパイラnsqlprepでプリコンパイルして生成されるCソースファイルによってC言語でのSQL実装を実現しています。

 一般的にESQL/Cを記述するファイルには拡張子[.sqc]を付加し、ファイルをプリコンパイル(nsqlprep xxx.sqc)すると[.c]ファイルが生成され、これによってC言語がSQLを含んだソースを解釈できるようになるので後はC言語の通常のソースと同じようにcc/gcc等でコンパイルできるようになります。

ESQL/C用の環境変数設定/SQL Server

 プリコンパイラnsqlprepは、環境変数INCLUDEとLIBを参照するので環境変数INCLUDEにヘッダパス、環境変数LIBにライブラリパスをフルパスで設定し、例えば、コマンドプロンプトからは、次のようにします。

 SET INCLUDE = C:\...\...\INCLUDE; %include% 
 SET LIB = C:\...\...\LIB; %LIB% 

 尚、これらのパスから必要なインクルードファイルについては、プリコンパイラnsqlprepがプリコンパイル時に自動的にインクルードするので[.sqc]ファイルではincludeで取り込む必要はありません。

ESQL/C用ライブラリ/SQL Server

 最近のバージョンでは前述のように環境変数LIBを正しく設定すれば、ESQL/Cライブラリのライブラリパスを指定する必要はないようです。

 SQL Server2000では、VC++ Version 4.5以降を利用すればWindows 95/98/NT 4.0が実行可能なマシンであれば、Windows 95/98/NT用に書かれたESQL/Cをプリコンパイル及びリンクできるようです(Windows NT と Windows 95/98 でのコンパイルおよびリンク参照)。

 SQL Server2000以前のRDB、(Version 1.52以降の)16ビットのVC++で開発されたもの、MS-DOS(Version 6.22 以降)クライアントにおけるESQL/Cにおいては、SQL Server2000上で実行することは可能で、コンパイルも別途環境設定すれば可能なようです(MS-DOS でのコンパイルおよびリンク参照)。

ESQL/Cの書き方

 [.sqc]ソース内ではプリコンパイルする部分である事を表す「EXEC SQL」を使って変数、構造体などの宣言部[DECLARE SECTION]の[BEGIN](開始)と[END](終了)、データベースへの接続である[CONNECT]、データベースに命令を出すための[CURSOR FOR](カーソル)の[OPEN]/[CLOSE]、カーソルから結果セットのレコードを1レコードずつ取得するための[FETCH]、SQLの実行、[NOTFOUND]や[SQLERROR]などのエラー時の処理とその処理を実行する[DO]、取り消し[ROLLBACK](ロールバック)、確定[COMMIT](コミット)などを行います。

ホーム前へ次へ