.NET Framework Data Provider for Oracle では、Oracle REF CURSOR データ型がサポートされています。 データ プロバイダーを使用して Oracle REF CURSOR を操作する場合は、次の動作を考慮する必要があります。
注
一部の動作は、Microsoft OLE DB Provider for Oracle (MSDAORA) とは異なります。
パフォーマンス上の理由から、DATA Provider for Oracle では、明示的に指定しない限り、MSDAORA のように REF CURSOR データ型は自動的にバインドされません。
データ プロバイダーは、REF CURSOR パラメーターの指定に使用される {resultset} エスケープを含め、ODBC エスケープ シーケンスをサポートしていません。
REF CURSOR を返すストアド プロシージャを実行するには、カーソルのOracleTypeと出力のDirectionを使用して、OracleParameterCollection内のパラメーターを定義する必要があります。 データ プロバイダーでは、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 の例
REF CURSOR の使用方法を示す 3 つの例が含まれています。
OracleDataReader の REF CURSOR パラメーター
REF CURSOR パラメーターを返し、 値を OracleDataReader として読み取る PL/SQL ストアド プロシージャを実行する方法を示します。
OracleDataReader を使用して複数の REF CURSOR からデータを取得する
2 つの REF CURSOR パラメーターを返し、 OracleDataReader を使用して値を読み取る PL/SQL ストアド プロシージャを実行する方法を示します。
1 つ以上の REF CURSOR を使用したデータセットの入力
2 つの REF CURSOR パラメーターを返し、返された行を DataSet に入力する PL/SQL ストアド プロシージャを実行する方法を示します。