Oracle® Objects for OLE Developer's Guide 10g Release 1 (10.1) Part Number B10118-01 |
|
Improper coding techniques with unnecessary object references can also affect performance. During Dynaset object navigation, you should reduce the number of object references to OraField collection and OraField object. The following is an inefficient code block:
'Create the OraDynaset Object
Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)
'Traverse until EOF is reached
Do Until OraDynaset.EOF
msgbox OraDynaset.Fields("sal").value
OraDynaset.MoveNext
Loop
In the previous example, OraDynaset, OraField collections, and OraField object are referenced for each iteration. Although OO4O provides improvement in handling the field collections object, multiple references to the automation object goes though underlying OLE/COM automation layer, which in turn slows down the execution. The following example shows how to reference fields through a field object and not through the fields collection of the dynaset. Testing has determined that this small amount of extra code greatly improves performance.
Dim flds() As OraField
Dim i, fldcount As Integer
' Create the OraDynaset Object
Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)
' Get the field count, and output the names
fldcount = OraDynaset.Fields.Count
ReDim flds(0 To fldcount - 1)
For i = 0 To fldcount - 1
Set flds(i) = OraDynaset.Fields(i)
Next I
'Traverse until EOF is reached
Do Until OraDynaset.EOF
msgbox Flds(5).Value
msgbox Flds(6).Value
OraDynaset.MoveNext
Loop
Any method or object that is referenced through more than one object is potentially inefficient, but the extra coding is not always worth the time saved, as in the first example of this section. The best place to start is with field references, because they are most likely to occur multiple times.