ヘッダーをスキップ
Oracle Data Provider for .NET開発者ガイド
11g リリース1(11.1)
E05791-01
  目次へ
目次
索引へ
索引

戻る
戻る
 
次へ
次へ
 

OracleRefCursorクラス

OracleRefCursorオブジェクトは、Oracle REF CURSORを表します。

クラスの継承

System.Object

  System.MarshalRefByObject

    Oracle.DataAccess.Types.OracleRefCursor

宣言

// C#
public sealed class OracleRefCursor : MarshalByRefObject, IDisposable, INullable

スレッド安全性

パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。

// Database Setup
/*
connect scott/tiger@oracle
CREATE OR REPLACE FUNCTION MyFunc(refcur_out OUT SYS_REFCURSOR)
  RETURN SYS_REFCURSOR IS refcur_ret SYS_REFCURSOR;
BEGIN
  OPEN refcur_ret FOR SELECT * FROM EMP;
  OPEN refcur_out FOR SELECT * FROM DEPT;
  RETURN refcur_ret;
END MyFunc;
/
*/

// C#

using System;
using System.Data;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

class OracleRefCursorSample
{
  static void Main()
  {
    // Example demonstrates how to use REF CURSORs returned from
    // PL/SQL Stored Procedures or Functions
    // Create the PL/SQL Function MyFunc as defined previously

    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();

    // Create an OracleCommand
    OracleCommand cmd = new OracleCommand("MyFunc", con);
    cmd.CommandType = CommandType.StoredProcedure;

    // Bind the parameters
    // p1 is the RETURN REF CURSOR bound to SELECT * FROM EMP;
    OracleParameter p1 =
      cmd.Parameters.Add("refcur_ret", OracleDbType.RefCursor);
    p1.Direction = ParameterDirection.ReturnValue;

    // p2 is the OUT REF CURSOR bound to SELECT * FROM DEPT
    OracleParameter p2 =
      cmd.Parameters.Add("refcur_out", OracleDbType.RefCursor);
    p2.Direction = ParameterDirection.Output;

    // Execute the command
    cmd.ExecuteNonQuery();

    // Construct an OracleDataReader from the REF CURSOR
    OracleDataReader reader1 = ((OracleRefCursor)p1.Value).GetDataReader();

    // Prints "reader1.GetName(0) = EMPNO"
    Console.WriteLine("reader1.GetName(0) = " + reader1.GetName(0));

    // Construct an OracleDataReader from the REF CURSOR
    OracleDataReader reader2 = ((OracleRefCursor)p2.Value).GetDataReader();

    // Prints "reader2.GetName(0) = DEPTNO"
    Console.WriteLine("reader2.GetName(0) = " + reader2.GetName(0));

    reader1.Close();
    reader1.Dispose();

    reader2.Close();
    reader2.Dispose();

    p1.Dispose();
    p2.Dispose();

    cmd.Dispose();

    con.Close();
    con.Dispose();
  }
}

要件

ネームスペース: Oracle.DataAccess.Types

アセンブリ: Oracle.DataAccess.dll

Microsoft .NET Frameworkバージョン: 1.xまたは2.0


OracleRefCursorメンバー

次の表に、OracleRefCursorメンバーを示します。

OracleRefCursor静的メソッド

OracleRefCursor静的メソッドのリストを、表11-28に示します。

表11-28 OracleRefCursor静的メソッド

メソッド 説明

Equals

System.Objectからの継承(オーバーロード)


OracleRefCursorプロパティ

OracleRefCursorプロパティのリストを、表11-29に示します。

表11-29 OracleRefCursorプロパティ

プロパティ 説明

Connection


REF CURSORデータのフェッチに使用されるOracleConnectionへの参照


OracleRefCursorインスタンス・メソッド

OracleRefCursorインスタンス・メソッドのリストを、表11-30に示します。

表11-30 OracleRefCursorインスタンス・メソッド

メソッド 説明

Dispose


OracleRefCursorオブジェクトによって割り当てられたリソースを処理します

Equals

System.Objectからの継承(オーバーロード)

GetDataReader


REF CURSOROracleDataReaderオブジェクトを戻します

GetHashCode

System.Objectからの継承

GetType

System.Objectからの継承

ToString

System.Objectからの継承



OracleRefCursor静的メソッド

OracleRefCursor静的メソッドのリストを、表11-31に示します。

表11-31 OracleRefCursor静的メソッド

メソッド 説明

Equals

System.Objectからの継承(オーバーロード)



OracleRefCursorプロパティ

OracleRefCursorプロパティのリストを、表11-32に示します。

表11-32 OracleRefCursorプロパティ

プロパティ 説明

Connection


REF CURSORデータのフェッチに使用されるOracleConnectionへの参照


Connection

このプロパティは、REF CURSORデータのフェッチに使用されるOracleConnectionを参照します。

宣言

// C#
public OracleConnection Connection {get;}

プロパティ値

OracleConnection

例外

ObjectDisposedException: オブジェクトはすでに処理されています。

備考

このプロパティを設定すると、REF CURSORにバインドされます。コンストラクタによってOracleRefCursorオブジェクトが作成されると、このプロパティは最初はnullになります。コマンドを実行すると、OracleRefCursorオブジェクトはREF CURSORにバインドされます。

接続がクローズされるか、または接続プールに返されると、OracleRefCursorは未初期化状態になり、このオブジェクトからの操作は実行されません。ただし、未初期化のOracleRefCursorを別のREF CURSORに再割当てすることはできます。


OracleRefCursorインスタンス・メソッド

OracleRefCursorインスタンス・メソッドのリストを、表11-33に示します。

表11-33 OracleRefCursorインスタンス・メソッド

メソッド 説明

Dispose


OracleRefCursorオブジェクトによって割り当てられたリソースを処理します

Equals

System.Objectからの継承(オーバーロード)

GetDataReader


REF CURSOROracleDataReaderオブジェクトを戻します

GetHashCode

System.Objectからの継承

GetType

System.Objectからの継承

ToString

System.Objectからの継承


Dispose

このインスタンス・メソッドは、OracleRefCursorオブジェクトによって割り当てられたリソースを処理します。

宣言

// C#
public void Dispose();

実装

IDisposable

備考

オブジェクトは、処理後は再度使用できません。

Dispose()が呼び出されると、OracleRefCursorのオブジェクトは未初期化状態になります。引き続き一部のプロパティにアクセスすることはできますが、その値は信頼できません。リソースが解放されているため、メソッドのコールにより例外が発生することがあります。

GetDataReader

このインスタンス・メソッドは、REF CURSOROracleDataReaderオブジェクトを戻します。

宣言

// C#
public OracleDataReader GetDataReader();

戻り値

OracleDataReader

備考

OracleDataReaderを使用すると、REF CURSORから行をフェッチできます。