備考
Oracle REF
は参照可能オブジェクトへの識別子です。参照可能オブジェクトはオブジェクト表の行に格納されます。REF
を確保することにより、参照可能オブジェクトがクライアント側にフェッチされます。参照可能オブジェクトの属性が最初にアクセスされる時点で、OraRef
オブジェクトが基礎となるREF
を暗黙的に確保します。また、OraRef
は、複合オブジェクト検索機能(COR)を利用するオブジェクト・ナビゲーショナル操作の機能をカプセル化します。
OraRef
オブジェクトで表される参照可能オブジェクトの属性は、OraObject
インタフェースで表される値インスタンスの属性にアクセスする場合と同様の方法でアクセスします。確保される時点で、COMの包含機構を介して、OraRef
にOraObject
インタフェースが組み込まれます。実行時点で、OraRef
インタフェースは、OraObject
インタフェースに型変換されます。
OraRef
は、ダイナセット、パラメータなど、基礎となるコンテキストの影響を受けない参照可能オブジェクトでの更新および削除操作用のメソッドを提供します。
参照可能オブジェクトの属性を変更する前に、オブジェクト・レベルでロックを取得してください。これはOraRef
オブジェクトのEdit
メソッドを使用して行います。
OraDatabase
オブジェクトのCreateOraObject
メソッドは、新しい参照可能オブジェクトをデータベースに作成し、OraRef
オブジェクトに関連付けられた情報を戻します。CreateOraObject
およびUpdate
メソッドのペアは、新しい参照可能オブジェクトをデータベースに挿入します。
OO4Oの参照可能オブジェクトを表すOraRef
オブジェクトの初期化方法または参照可能オブジェクトのメンバー・メソッドの実行方法については、「Oracle LOB、オブジェクトおよびコレクションのインスタンス化」を参照してください。
例
サンプル・コードを実行する前に、必要なデータ型と表がデータベース内にあることを確認してください。OraObject
/OraRef
の例で使用されているスキーマの記述については、「OraObjectおよびOraRefの例で使用されているスキーマ・オブジェクト」を参照してください。
例: REF値の確保
次の例では、データベースにあるPERSON
という参照可能オブジェクトの属性を確保します。
Dim OraSession as OraSession Dim OraDatabase as OraDatabase Dim OraDynaset as OraDynaset Dim Person as OraRef 'Create the OraSession Object. Set OraSession = CreateObject("OracleInProcServer.XOraSession") 'Create the OraDatabase Object by opening a connection to Oracle. Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&) 'create a dynaset object from customers set OraDynaset = OraDatabase.CreateDynaset("select * from customers", 0&) 'retrieve a aperson column from customers. Here Value property of ' OraField object returns Person OraRef set Person = OraDynaset.Fields("aperson").Value 'access the attribute of person. This operation pins the Person ref 'value and fetches the Person referenceable object to the client. msgbox Person.Name
例: 属性値へのアクセス
次の例では、データベースにあるPERSON
という参照可能オブジェクトの属性にアクセスします。
Dim OraSession as OraSession Dim OraDatabase as OraDatabase Dim OraDynaset as OraDynaset Dim Person as OraRef Dim Address as OraObject 'Create the OraSession Object. Set OraSession = CreateObject("OracleInProcServer.XOraSession") 'Create the OraDatabase Object by opening a connection to Oracle. Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&) 'create a dynaset object from customers set OraDynaset = OraDatabase.CreateDynaset("select * from customers", 0&) 'retrieve a aperson column from customers. Here Value property of OraField 'object returns Person OraRef set Person = OraDynaset.Fields("aperson").Value 'access the attribute by dot notation. msgbox Person.Name 'access the attribute using '!' notation ( early binding application) msgbox Person!Name 'access the attribute by index msgbox Person(1) 'access the attribute by name msgbox Person("Name") 'access Addr attribute . This returns Address OraObject. set Address = Person.Addr
例: 属性値の更新
次の例では、データベースにあるPERSON
という参照可能オブジェクトの属性を更新します。
ダイナセットの例
「属性値の更新: ダイナセットの例」を参照してください。
パラメータの例
「属性値の更新: パラメータの例」を参照してください。
例: 参照可能オブジェクトの挿入
次の例では、PERSON
という新しい参照可能オブジェクトをデータベースに挿入します。
Dim OraSession as OraSession Dim OraDatabase as OraDatabase Dim Person as OraRef 'Create the OraSession Object. Set OraSession = CreateObject("OracleInProcServer.XOraSession") 'Create the OraDatabase Object by opening a connection to Oracle. Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&) 'CreateOraObject creates a new referenceable object in the PERSON_TAB object 'table and returns associated OraRef set Person = OraDatabase.CreateOraObject("PERSON","PERSON_TAB") 'modify the attributes of Person Person.Name = "Eric" Person.Age = 35 'Update method inserts modified referenceable object in the PERSON_TAB. Person.Update