IF Computer > IF/Prolog > Manuals > IF/Prolog V4.1 マニュアル > IF/Prolog Interfaces > SQLインタフェースマニュアル > IF/PrologからのダイナミックSQLコマンドの使い方

IF/PrologからのダイナミックSQLコマンドの使い方

IF/Prolog by Siemens
MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

IF/SQL述語を使用した動的なデータベース操作の完全なトランザクションは以下の手順で行なわれます。

1. SQLコマンドの宣言、RDBMSでの事前翻訳、及びそのコマンドのカーソルの定義(sql_declare/5)。

2. もしSQLコマンドのバインド変数があれば、これを具体化する。

3. コマンドの実行(sql_open/2)。

4. データのアクセス、アプリケーションへの転送(SQL SELECTコマンドのみ)

a) sql_fetch_buf/2 と sql_get_value/5

または

b) sql_descr_out/2 と sql_fetch/4 或は sql_fetch_n/5

5. いくつかのSQL INSERT、SQL UPDATE、SQL DELETEコマンドの実行後に、トランザクションのコミット(sql_commit/1)またはロールバック(sql_rollback/1)をする。

6. コマンドのカーソルの解放。

ユーザー許可、データ定義、データ検索、データ加工など、どのようなSQLコマンドでも上記の方法で実行することができます。

ステップ1とステップ3は常に実行されねばなりません。

ステップ2はバインド変数を持つコマンドの場合のみに必要です。

ステップ4aまたはステップ4bはSQL SELECTコマンドの場合のみに意味があります。

必ず、ステップ1、2、3、[4、5、] 6の順序で実行してください。

ステップ2、3 [、4]は何度でも実行できます。

様々なデータベース操作、すなわち異なるカーソルを持つコマンドを、並列に実行することができます。つまり、それらのデータベース操作はお互いにインタリーブしたり、ネストすることが出来ます。

sql_declare/5のCursor引数が`immediate'であるような呼出しは特別な意味を持っており、翻訳後すぐ指定されたSQLコマンドを実行します。(バインド変数またはselect変数は存在することができません!)。これはRDBMSによるコマンドの解釈実行を行なうsql_execute(+SqlCmd,-RC)と同等です。

なお、この述語は、一度以上呼び出せないSQLコマンドの代りに使うこともできます。その性能をダイナミックSQLコマンドと比べてみて下さい。

document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/advanced_feature/sql/howuse/print_en.html
published 2008/9/1 update 1994/7/29 (c) 1996-2006 IF Computer Japan
IF Computer 5-28-2 Sendagi, Bunkyo-ku Tel +81-3-5814-3352 start (AT) ifcomputer.com
Customer Support Tokyo 113-0022 Japan   http://www.ifcomputer.com
Back> managed with ubiCMS