APEX: Create and Parse Arrays
It's been awhile since I've been able to work with APEX extensively, so I am rusty.
A question came up today whether we could get multiple values into a single variable (Item in APEX).
Yes we can!
APEX_UTILSNeed some data first:
CREATE TABLE t ( some_text VARCHAR2(10) );
INSERT INTO t ( some_text )
SELECT dbms_random.string( 'a', 10 ) some_text
FROM dual
CONNECT BY LEVEL <= 5;
CJUSTICE@TESTING>SELECT * FROM t;
SOME_TEXT
----------
thrFXviVWJ
kpfGRRwctv
EVxNrcmBHC
gcBlHaKrLa
irYduOZfkS
I want that table data to be in a single item.
TABLE_TO_STRING is your function.
VAR C VARCHAR2(100);
DECLARE
l_table APEX_APPLICATION_GLOBAL.VC_ARR2;
BEGIN
SELECT some_text
BULK COLLECT INTO l_table
FROM t;
:c := apex_util.table_to_string( p_table => l_table );
END;
/
PL/SQL procedure successfully completed.
C
-----------------------------------------------------------
thrFXviVWJ:kpfGRRwctv:EVxNrcmBHC:gcBlHaKrLa:irYduOZfkS
Easy enough. How about converting it back to a table?
STRING_TO_TABLE is your answer.
DECLARE
l_table APEX_APPLICATION_GLOBAL.VC_ARR2;
BEGIN
l_table := apex_util.string_to_table( p_string => :c );
FOR i IN 1..l_table.COUNT LOOP
d( 'value ' || i || ': ' || l_table(i) );
END LOOP;
END;
/
value 1: thrFXviVWJ
value 2: kpfGRRwctv
value 3: EVxNrcmBHC
value 4: gcBlHaKrLa
value 5: irYduOZfkS
PL/SQL procedure successfully completed.
Done.
Labels: apex, apex_util, howto