DBMS_HS_PASSTHROUGH PL/SQLパッケージを使用すると、Oracleサーバーによる解釈がなくてもOracle以外のシステムに文を直接送信できます。この機能は、Oracle以外のシステムで使用できる文と同等の文がOracleにない場合に役立ちます。
この章では、次の項目について説明します。
概要
使用上の注意
|
関連項目: このパッケージの詳細は、『Oracle Database Heterogeneous Connectivityユーザーズ・ガイド』を参照してください。 |
この項では、DBMS_HS_PASSTHROUGHパッケージの使用に関連する項目について説明します。
PL/SQLパッケージDBMS_HS_PASSTHROUGHを使用すると、パススルーSQL文をOracle以外のシステムで直接実行できます。このパッケージで実行される文は、標準のSQL文と同じトランザクションで実行されます。
|
関連項目: このパッケージの詳細は、『Oracle Database Heterogeneous Connectivityユーザーズ・ガイド』を参照してください。 |
DBMS_HS_PASSTHROUGHパッケージは仮想パッケージです。概念上は、Oracle以外のシステムに常駐します。ただし、実際には、このパッケージのコールは異機種間サービスにより仲介され、1つ以上の異機種間サービス・コールにマップされます。次に、これらの異機種間サービス・コールは、ドライバによりOracle以外のシステムのAPIにマップされます。クライアント・アプリケーションは、Oracle以外のシステムのストアド・プロシージャをコールする場合と同じ方法で、データベース・リンクを介してパッケージ内のプロシージャをコールする必要があります。異機種間サービスにより実行される特殊処理は、ユーザーに対して透過的です。
表78-1 DBMS_HS_PASSTHROUGHパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
|
|
|
|
データ・タイプ |
|
|
|
|
|
データ・タイプ |
|
|
位置を基準にして |
|
|
|
|
|
SQL文がOracle以外のシステムで実行された後は、カーソルをクローズして、関連メモリーを解放します。 |
|
|
バインド変数を使用せずに、( |
|
|
( |
|
|
問合せから行をフェッチします。 |
|
|
|
|
|
|
|
|
Oracle以外のシステムでパススルーSQL文を実行するためのカーソルをオープンします。 |
|
|
Oracle以外のシステムでSQL文を解析します。 |
このプロシージャは、IN OUTバインド変数をバインドします。
DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NOT NULL, v IN OUT <dty>, n IN VARCHAR2);
<dty>はDATE、NUMBERまたはVARCHAR2のいずれかです。
表78-2 BIND_INOUT_VARIABLEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチン |
|
|
SQL文におけるバインド変数の位置。1から始まります。 |
|
|
この値は次の2つの目的で使用されます。 - SQL文が実行される前にINの値を設定します。 - OUT値のサイズを判別します。 |
|
|
(オプション)バインド変数名。 たとえば、 |
このプロシージャは、データ・タイプRAWのIN OUTバインド変数をバインドします。
DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE_RAW ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NOT NULL, v IN OUT RAW, n IN VARCHAR2);
表78-4 BIND_INOUT_VARIABLE_RAWプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチン |
|
|
SQL文におけるバインド変数の位置。1から始まります。 |
|
|
この値は次の2つの目的で使用されます。 - SQL文が実行される前にINの値を設定します。 - OUT値のサイズを判別します。 |
|
|
(オプション)バインド変数名。 たとえば、 |
このプロシージャは、OUT変数をPL/SQLプログラム変数にバインドします。
DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NULL, v OUT <dty>, n IN VARCHAR2);
<dty>はDATE、NUMBERまたはVARCHAR2のいずれかです。
表78-6 BIND_OUT_VARIABLEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチン |
|
|
SQL文におけるバインド変数の位置。1から始まります。 |
|
|
|
|
|
(オプション)バインド変数名。 たとえば、 |
このプロシージャは、データ・タイプRAWのOUT変数をPL/SQLプログラム変数にバインドします。
DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE_RAW ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NOT NULL, v OUT RAW, n IN VARCHAR2);
表78-8 BIND_OUT_VARIABLE_RAWプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチン |
|
|
SQL文におけるバインド変数の位置。1から始まります。 |
|
|
|
|
|
(オプション)バインド変数名。 たとえば、 |
このプロシージャは、位置を基準にしてIN変数をPL/SQLプログラム変数にバインドします。
DBMS_HS_PASSTHROUGH.BIND_VARIABLE ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NOT NULL, v IN <dty>, n IN VARCHAR2);
<dty>はDATE、NUMBERまたはVARCHAR2のいずれかです。
表78-10 BIND_VARIABLEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチン |
|
|
SQL文におけるバインド変数の位置。1から始まります。 |
|
|
バインド変数名に渡す必要がある値。 |
|
|
(オプション)バインド変数名。 たとえば、 |
このプロシージャは、RAWタイプのIN変数をバインドします。
DBMS_HS_PASSTHROUGH.BIND_VARIABLE_RAW ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NOT NULL, v IN RAW, n IN VARCHAR2);
表78-12 BIND_VARIABLE_RAWプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチン |
|
|
SQL文におけるバインド変数の位置。1から始まります。 |
|
|
バインド変数に渡す必要がある値。 |
|
|
(オプション)バインド変数名。 たとえば、 |
このファンクションは、SQL文がOracle以外のシステムで実行された後に、カーソルをクローズし、関連メモリーを解放します。カーソルがオープンされていない場合、操作は何も行われません。
このファンクションは、SQL文を即時実行します。有効なSQLコマンド(SELECTを除く)をすぐに実行できます。文にバインド変数を含めることはできません。文は引数でVARCHAR2として渡されます。SQL文は、内部的には、OPEN_CURSOR、PARSE、EXECUTE_NON_QUERYおよびCLOSE_CURSORのPASSTHROUGH SQLプロトコル・シーケンスを使用して実行されます。
このファンクションはSQL文を実行します。SQL文にSELECT文は使用できません。SQL文を実行する前に、カーソルをオープンし、SQL文を解析する必要があります。
このファンクションは、結果セットから行をフェッチします。結果セットは、SQL SELECT文で定義されます。それ以上フェッチする行がなくなると、例外NO_DATA_FOUNDが発生します。行をフェッチする前に、カーソルをオープンし、SQL文を解析する必要があります。
DBMS_HS_PASSTHROUGH.FETCH_ROW ( c IN BINARY_INTEGER NOT NULL, f IN BOOLEAN) RETURN BINARY_INTEGER;
このプロシージャには2つの目的があります。
行がフェッチされた後に、SELECT文の選択リスト項目を取り出します。
SQL文が実行された後に、OUTバインド値を取り出します。
DBMS_HS_PASSTHROUGH.GET_VALUE ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NOT NULL, v OUT <dty>);
<dty>はDATE、NUMBERまたはVARCHAR2のいずれかです。
このプロシージャはGET_VALUEと同様ですが、データ・タイプRAWに使用します。
DBMS_HS_PASSTHROUGH.GET_VALUE_RAW ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NOT NULL, v OUT RAW);
このファンクションは、Oracle以外のシステムでパススルーSQL文を実行するためのカーソルをオープンします。このファンクションは、すべてのタイプのSQL文に対してコールする必要があります。
後続のコールで使用する必要があるカーソルが戻されます。このコールによってメモリーが割り当てられます。関連付けられたメモリーの割当てを解除するには、プロシージャCLOSE_CURSORをコールします。