IF Computer > IF/Prolog > Manuals > IF/Prolog V4.1 マニュアル > IF/Prolog Interfaces > ORACLE インタフェースマニュアル > Oracleインタフェースの述語

Oracleインタフェースの述語

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.

以後の述語の説明の際に使われている引数名は、下の表で示す値が与えられます。

ユーザId アトム 'ユ−ザ/パスワ−ド' 返り値 整数:Oracleの返り値,0=成功 SQL質問 正式なSQL質問を形成するアトム 選択質問 正式なSELECT質問を形成するアトム タプル数 1〜最大整数値の中の整数,-1は全タプルを示す。 タプルリスト タプルのリスト:[タプル1,タプル2,... ] タプル フィールドのリスト:[値1,値2,... ] 値 アトム項

oracle_logon(+ユーザId,-返り値) oracle_logoff(-返り値)

最初に、oracle_logon/2を使って、Oracleデ−タベ−スにログオンします。ユーザIdは、ユーザ名/パスワードという形です。「返り値」はログオンが成功すると0になります。

「ユ−ザId」は、Oracleのユ−ザIDで、Unixシステムのログイン名ではありません。「ユーザId」は、前もってセットされていなければなりません(たとえば sqlplusを使って)。「返り値」が0でない場合には、ユ−ザIDがあることを確かめて下さい。詳しくは、Oracleマニュアルを参照して下さい。

oracle_logoffは、Oracleデ−タベ−スからログオフします。変更をコミットしない状態でのログオフは、暗黙のロ−ルバックとなります。ログオフが成功すると「返り値」は0にセットされます。

?- oracle_logon('scott/tiger',X). X = 0 yes ?- _

oracle_commit(-返り値) oracle_rollback(-返り値) oracle_auto_on(-返り値) oracle_auto_off(-返り値)

oracle_commit/1は、ログオンされてから、または、この述語の最後の使用以降のデ−タベ−スへの変更をセ−ブします。oracle_rollback/1は、ログオンされてからまたはoracle_commitが前回に呼び出されて以来のデ−タベ−スへの変更を元に戻す、すなわち"ロ−ルバツク"します。

oracle_auto_off/1は、自動コミットの解除をします(デフォルトはオフ)。デ−タベ−スへの変更は、oracle_commitが呼び出されるまでは、永続的なものではありません。 oracle_auto_on/1は、自動コミットに設定します。これにより、デ−タベ−スの状態を変更するコマンドの後に、ただちにコミットコマンドが自動的に実行されます。

「返り値」は、コマンドの実行が成功した場合には、常に0です。

 oracle_exec(+SQL質問,-返り値) # oracle_fetch_n(+選択質問,+タプル数,-タプルリスト)

oracle_exec/2は、SELECTを除くSQLのコマンドを実行します。質問は、「SQL質問」にアトムで与えなければなりません。'sqlplus'を使う場合とは違い、セミコロン';'は不要です。 「返り値」は、コマンドが構文的に正しく、実行に成功した場合には0となります。

oracle_fetch_n/3は、SELECT質問を実行します。それは「選択質問」にアトムで与えなければなりません。見つかった各タプルは、フィ−ルド値のリストのリストとして、「タプルリスト」に返されます。最大で、「タプル数」(>0)個の解が得られます。バックトラックが生じた場合には、次の「タプル数」個の解が得られます。以後も同様です。「タプル数」= -1とした場合には、すべての解が1回の呼び出しで得られます。

?- concat(['create table people ', '(name char(20),age number(5))'], SQLC), oracle_exec(SQLC,X). X = 0 yes ?- _

document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/advanced_feature/oracle/intpred/print_en.html
published 2009/1/5 update 1995/12/12 (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