In Oracle Database 18C type initialization is simplified with qualified expressions for Record type and Associative Array Type. It can help simplify coding.
Record
rec_var := (field_name => some_value, .., field_name => some_value)
Associative Array
rec_var := (1 => some_value, .., 10 => some_value)
RECORD type example
DECLARE TYPE l_rec_type IS RECORD ( username VARCHAR2(30), phone VARCHAR2(30), town VARCHAR2(30) ); l_user l_rec_type; BEGIN --works for version 12C l_user := l_rec_type('Tomasz', NULL, 'Warsaw'); --new 18C l_user := l_rec_type ( username => 'Tomasz', phone => 'Warsaw' ); END; /
ASSOCIATIVE ARRAY example
DECLARE TYPE l_rec_idx_type IS TABLE OF VARCHAR(30) INDEX BY BINARY_INTEGER; TYPE l_rec_var_type IS TABLE OF VARCHAR(30) INDEX BY VARCHAR2(30); l_idx l_rec_idx_type; l_var l_rec_var_type; BEGIN --works for version 12C l_idx(1) := 'Tomasz'; l_idx(2) := 'Adam'; l_idx(4) := 'Eve'; --new 18C l_idx := l_rec_idx_type ( 1 => 'Tomasz', 2 => 'Adam', 4 => 'Eve' ); --works for version 18C l_var('Tomasz') := 'Lesinski'; l_var('Adam') := 'First'; l_var('Eve') := 'Second'; --new 18C l_var := l_rec_var_type ( 'Tomasz' => 'Lesinski', 'Adam' => 'First', 'Eve' => 'Second' ); END; /
Have a fun 🙂
Tomasz