The OraRef
interface represents an Oracle REF
(reference) as well as a referenceable object (standalone instance).
An Oracle REF
is an identifier to a referenceable object. Referenceable objects are stored in rows of an object table. By pinning a REF
object, referenceable objects are fetched to the client side. An OraRef
object implicitly pins the underlying REF
when the attributes of a referenceable object are accessed for the first time. The OraRef
also encapsulates the functionality for an object navigational operation utilizing the Complex Object Retrieval Capability (COR).
Attributes of a referenceable object represented by the OraRef
object are accessed in the same manner as attributes of an value instance represented by the OraObject
interface. When pinned, OraRef
contains an OraObject
interface through the containment mechanism in COM. At run time, the OraRef
interface can be typecast to the OraObject
interface.
OraRef
provides methods for update and delete operations on a referenceable object, independent of the context from which they originated, such as dynasets, parameters, and so on.
An object-level lock should be obtained before modifying the attributes of a referenceable object. This is done though the Edit
method of the OraRef
object.
The CreateOraObject
method on the OraDatabase
object creates a new referenceable object in the database and returns information associated with the OraRef
Object. The CreateOraObject
and Update
methods pair inserts a new referenceable object in the database.
For information about initializing an OraRef
object representing a referenceable object in OO4O or executing a member method of a referenceable object, see "Instantiating Oracle LOBs, Objects, and Collections".
Before running the sample code, make sure that you have the necessary data types and tables in the database. See "Schema Objects Used in the OraObject and OraRef Examples" for schema descriptions used in examples of OraObject
/OraRef
.
The following example pins the attributes of the PERSON
referenceable object in the database.
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
Example: Accessing Attribute Values
The following example accesses the attributes of the PERSON
referenceable object in the database.
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
Example: Updating Attribute Values
The following example updates the attributes of the PERSON
referenceable object in the database.
Dynaset Example
See "Updating Attribute Values: Dynaset Example".
Parameter Example
See "Updating Attribute Values: Parameter Example".
Example: Inserting Referenceable Objects
The following example inserts the new PERSON
referenceable object in the database.
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