Associative Array is most flexible on element indexing. Nested Table is good enough for Bulk Fetching.
But Bryn Llewellyn, Oracle PL/SQL Product Manager likes to use VArray in his demo.
"the collection is best declared as a varray with a maximum size equal to Batchsize."
See http://www.oracle.com/technology/tech/pl_sql/pdf/doing_sql_from_plsql.pdf
Probably he knows that VARRAY implemented with the most efficient internal storage, and delivery the best performance, when correctly used; it may meet most of the requirements for loop batch bulk fetching.
To find out the details, you may do a simple RunStats benchmark.
- Associative Array type(or index-by table)
TYPE population IS TABLE OF NUMBER INDEX BY VARCHAR2(64);
- Nested Tables
TYPE nested_type IS TABLE OF VARCHAR2(30);
- invoke EXTEND method to add elements later
- Collection of ADT = UDT, Abstract datatype, User defined datatype:
CREATE OR REPLACE TYPE INVDB.NUMBER_TAB_TYPE is table of number; / select ... from TABLE(ADT_Table_Instance);
Comments, Bulk fetch into ADT is not efficient, you may see the workaround in paper doing_sql_from_plsql.pdf
- Variable-size array (varray)
-- Code_30 Many_Row_Select.sql Batchsize constant pls_integer := 1000; type Result_t is record(PK t.PK%type, v1 t.v1%type); type Results_t is varray(1000) of Result_t; Results Results_t;
Concept
- Associative Array: sparse array.
- Nested Table or ADT/UDT : dense array
REM Associative Array declare type date_aat is table of date index by binary_integer; l_data date_aat; begin l_data(-200) := sysdate; l_data(+200) := sysdate+1; end; /
collection(elements), e.g.
collection_instance(element_unique_subscript_index_number)
record_name.field_name
No comments:
Post a Comment