René Nyffenegger's collection of things on the web | |
René Nyffenegger on Oracle - Most wanted - Feedback
- Follow @renenyffenegger
|
Declaration of a PL/SQL collection type | ||
The three collection types are declared as follows:
Nested tabledeclare type varchar2_nested_table_type is table of varchar2(100); begin null; end; / create type number_nested_table_type as table of number /
See deleting and inserting from/to a nested table for an example.
Varraydeclare type varchar2_varray_type is varray(50) of varchar2(100); begin null; end; / create type varchar2_varray_type as varray(50) of varchar2(100) /
In the example above, 50 indicates the maximum count of elements in the varray.
Index-by Tabledeclare type varchar2_index_by_type is table of varchar2(100) index by pls_integer; begin null; end; /
Index by tables cannot be declared «globally»; the following construct generates a
PLS-00355: use of pl/sql table not allowed in this context .
create or replace type number_index_by_type is table of number index by pls_integer; / is versus as
Type declarations within the
declare section of a block must be created
with is , not as . For example, the following block generates a
PLS-00103: Encountered the symbol "TABLE" when expecting one of the following: object opaque
declare type varchar2_index_by_type as -- as wrong here, use is instead table of varchar2(100) index by pls_integer; begin null; end; / |