Oracle REF CURSOR

.NET Framework Data Provider for Oracle では、Oracle の REF CURSOR データ型がサポートされています。 データ プロバイダーを使用して Oracle REF CURSOR を操作するときは、次の動作を考慮する必要があります。

Note

動作の中には、Microsoft OLE DB Provider for Oracle (MSDAORA) の動作と異なるものがあります。

  • パフォーマンスの理由から、Data Provider for Oracle では、バインドするよう明示的に指定した場合を除き、REF CURSOR データ型が自動的にバインドされることはありません。これは、MSDAORA の場合と同じです。

  • データ プロバイダーでは、REF CURSOR パラメーターの指定に使用する {resultset} エスケープのような、ODBC エスケープ シーケンスはサポートされていません。

  • REF CURSOR を返すストアド プロシージャを実行するには、OracleParameterCollection のパラメーターで、OracleTypeCursor に、DirectionOutput に定義する必要があります。 データ プロバイダーでは、REF CURSOR のバインドは出力パラメーターとしてのみサポートされています。 プロバイダーは、入力パラメーターとしての REF CURSOR はサポートしていません。

  • パラメーター値からの OracleDataReader の取得はサポートされていません。 値は、コマンドを実行すると DBNull 型になります。

  • REF CURSOR で動作する CommandBehavior 列挙値は (たとえば、ExecuteReader を呼び出すとき)、CloseConnection だけです。それ以外はすべて無視されます。

  • OracleDataReader 内の REF CURSOR の順序は、OracleParameterCollection でのパラメーターの順序によって決まります。 ParameterName プロパティは無視されます。

  • PL/SQL の TABLE データ型はサポートされていません。 ただし、REF CURSOR は、さらに効果的です。 TABLE データ型を使用する必要がある場合は、MSDAORA と共に OLE DB .NET データ プロバイダーを使用します。

このセクションの内容

REF CURSOR の例
次の 3 つの例を使って REF CURSOR の使い方について説明します。

OracleDataReader の REF CURSOR パラメーター
REF CURSOR パラメーターを返し、OracleDataReader として値を読み取る、PL/SQL のストアド プロシージャを実行する方法を示します。

OracleDataReader を使用した複数の REF CURSOR からのデータの取得
REF CURSOR パラメーターを返し、OracleDataReader を使用して値を読み取る、PL/SQL のストアド プロシージャを実行する方法を示します。

1 つまたは複数の REF CURSOR を使用した DataSet の値の設定
2 つの REF CURSOR パラメーターを返し、返された行を DataSet に入力する、PL/SQL ストアド プロシージャを実行する方法について説明します。

関連項目