Associative Array Type Definition
This is a translation reference to convert the Oracle Associative Array Declaration to Snowflake
This section is a work in progress, information may change in the future.
Description
An associative array (formerly called PL/SQL table or index-by table) is a set of key-value pairs. Each key is a unique index, used to locate the associated value with the syntax
variable_name(index)
.The data type of
index
can be either a string type (VARCHAR2
,VARCHAR
,STRING
, orLONG
) orPLS_INTEGER
. Indexes are stored in sort order, not creation order. For string types, sort order is determined by the initialization parametersNLS_SORT
andNLS_COMP
.
Not to be confused with the PL/SQL NESTED TABLE Type definition.
For the translation, the type definition is replaced by an OBJECT Semi-structured Data Type and then its usages are changed accordingly across any operations.
In order to define an Associative Array type, the syntax is as follows:
To declare a variable of this type:
Sample Source Patterns
Varchar-indexed Associative Array
Oracle
Snowflake
Please note the 'true' parameter in the OBJECT_INSERT. This is so that the element is updated if it is already present in the array.
Numeric-indexed Associative Array
Oracle
Snowflake
Please note that the numeric value is converted to varchar accordingly when the operation needs it. Additionally, note the 'true' parameter in the OBJECT_INSERT. This is so that the element is updated if it is already present in the array.
Record-element Numeric-indexed Associative Array
In this case, the associative array is composed of a Record-structure, and this structure needs to be preserved. For this purpose, further operations on insertions were added.
Oracle
Snowflake
In this scenario, the insertion/update assumes an automatic creation of the record within the associative array and this needs to be taken into account when creating new records.
Known Issues
1. They are currently not being recognized
SnowConvert treats these collections as Nested Table Arrays. There is a work item to fix this.
Related EWIs
No related EWIs.
Last updated