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 のパラメーターで、OracleType を Cursor に、Direction を Output に定義する必要があります。 データ プロバイダーでは、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 ストアド プロシージャを実行する方法について説明します。