説明
OraObject
インタフェースは、Oracleの値インスタンス(参照可能でないオブジェクト・インスタンスまたは埋込みオブジェクト)を表します。値インスタンスは、表の列に格納されたOracleオブジェクト型のインスタンス、または別のOracleオブジェクト・インスタンスまたはOracleコレクション要素の属性です。
備考
OraObject
には、値インスタンスの個々の属性にアクセスして操作(更新と挿入)するコレクション・インタフェースが暗黙的に含まれます。添字または属性名を使用すると、個々の属性にアクセスできます。
OraObject
の属性の索引は1
から開始します。Count
プロパティは、属性の合計数を戻します。値インスタンスの基礎となる各属性は、OraAttribute
オブジェクトとして表されます。
属性の値は、変数として取り出されます。属性のVariant
型は、オブジェクトの属性の型によって決まります。属性の値にはNULLを使用でき、NULL
を設定できます。REF
、LOBおよびコレクション型のオブジェクトの場合は、属性の値が、その型に対応するOO4Oオブジェクトとして戻されます。
OraDatabase
オブジェクトのCreateOraObject
メソッドは、OraObject
オブジェクトを戻します。このOraObject
に関連付けられた値インスタンスは、クライアント側のオブジェクト・キャッシュに作成されます。
値インスタンスのメンバー・メソッドの実行方法については、「Oracleオブジェクト・インスタンスのメンバー・メソッドの実行」を参照してください。
OO4Oの値インスタンスを表すOraObject
オブジェクトの初期化方法または値インスタンスのメンバー・メソッドの実行方法については、「Oracle LOB、オブジェクトおよびコレクションのインスタンス化」を参照してください。
例
OraObject
/OraRef
オブジェクトの例で使用されているスキーマの記述については、「OraObjectおよびOraRefの例で使用されているスキーマ・オブジェクト」を参照してください。
例: OraObjectオブジェクトの属性へのアクセス
次の例では、データベースにあるADDRESS
という値インスタンスの属性にアクセスします。
Dim OraSession as OraSession Dim OraDatabase as OraDatabase Dim OraDynaset as OraDynaset 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 person_tab set OraDynaset = OraDatabase.CreateDynaset("select * from person_tab",0&) 'retrieve a address column from person_tab. Here Value property of OraField 'object returns Address OraObject set Address = OraDynaset.Fields("Addr").Value 'access the attribute by dot notation msgbox Address.Street 'access the attribute using '!' notation ( early binding application) msgbox Address!Street 'access the attribute by index msgbox Address(1) 'access the attribute by name msgbox Address("Street") 'access all the attributes of Address OraObject in the dynaset Do Until OraDynaset.EOF For index = 1 To Address.Count msgbox Address(index) Next Index OraDynaset.MoveNext Loop
例: OraObjectオブジェクトの属性の更新
次の例では、データベースにあるADDRESS
という値インスタンスの属性を変更します。
ダイナセットの例
Dim OraSession as OraSession Dim OraDatabase as OraDatabase Dim OraDynaset as OraDynaset 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 person_tab set OraDynaset = OraDatabase.CreateDynaset("select * from person_tab", 0&) 'retrieve a address column from person_tab. 'Here Value property of OraField object returns Address OraObject set Address = OraDynaset.Fields("Addr").Value 'start the Edit operation and modify the Street attribute OraDynaset.Edit Address.Street = "Oracle Parkway" OraDynaset.Update
パラメータの例
Dim OraSession as OraSession Dim OraDatabase as OraDatabase 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 an OraParameter object represent Address object bind Variable OraDatabase.Parameters.Add "ADDRESS", Empty, ORAPARM_INPUT, ORATYPE_OBJECT, _ "ADDRESS" 'get the uninitialized 'Empty' Address object from OraParameter set Address = OraDatabase.Parameters("ADDRESS").Value 'modify the 'Street' attribute of the Address Address.Street = "Oracle Parkway" 'execute the sql statement which updates Address in the person_tab OraDatabase.ExecuteSQL ("update person_tab set addr = :ADDRESS where age = 40")
例: OraObjectオブジェクトの挿入
次の例では、ADDRESS
という新しいフィールド(値インスタンス)をデータベースに挿入します。
ダイナセットの例
Dim OraSession as OraSession Dim OraDatabase as OraDatabase Dim OraDynaset as OraDynaset Dim AddressNew 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 person_tab set OraDynaset = OraDatabase.CreateDynaset("select * from person_tab", 0&) ' create a new Address object in OO4O set AddressNew = OraDatabase.CreateOraObject("ADDRESS") 'initialize the Address object attribute to new value AddressNew.Street = "Oracle Parkway" AddressNew.State = "CA" 'start the dynaset AddNew operation and set the Address field to new address ' value OraDynaset.Addnew OraDynaset.Fields("ADDR").Value = AddressNew OraDynaset.Update
OraParameterの例
Dim OraSession as OraSession Dim OraDatabase as OraDatabase Dim OraDynaset as OraDynaset Dim AddressNew 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 an OraParameter object represent Address object bind Variable OraDatabase.Parameters.Add "ADDRESS", Null, ORAPARM_INPUT, ORATYPE_OBJECT, _ "ADDRESS" ' create a new Address object in OO4O set AddressNew = OraDatabase.CreateObject("ADDRESS") 'initialize the Address object attribute to new value AddressNew.Street = "Oracle Parkway" AddressNew.State = "CA" 'set the Address to ADDRESS parameter Oradatabase.Parameters("ADDRESS").Value = AddressNew 'execute the sql statement which updates Address in the person_tab OraDatabase.ExecuteSQL ("insert into person_tab values (30,'Eric',:ADDRESS))