Application Express User's Guide > Building an Application > Creating Items > Working with a Multiple Sel...
Working with a Multiple Select List Item |
Previous |
Next |
A multiple select item renders as a multiple select list form element. When submitted, selected values are returned in a single colon-delimited string. You can handle values in this format in two ways:
Using the INSTR
function
Using the HTMLDB_UTIL.STRING_TO_TABLE
function
Suppose you had a report on the EMP
and DEPT
tables that is limited by the departments selected from a Department multiple select list. First, you create the multiple select item, P1_DEPTNO, using the following query:
SELECT dname, deptno FROM dept
Second, you return only those employees within the selected departments as follows:
SELECT ename, job, sal, comm, dname FROM emp e, dept d WHERE d.deptno = e.deptno AND instr(':'||:P1_DEPTNO||':',':'||e.deptno||':') > 0
Next, assume you want to programmatically step through the values selected in the multiple select item, P1_DEPTNO. To accomplish this, you would convert the colon-delimited string into a PL/SQL array using the HTMLDB_UTIL.STRING_TO_TABLE
function. The following example demonstrates how to insert the selected departments into an audit table containing the date of the query.
DECLARE l_selected HTMLDB_APPLICATION_GLOBAL.VC_ARR2; BEGIN -- -- Convert the colon separated string of values into -- a PL/SQL array l_selected := HTMLDB_UTIL.STRING_TO_TABLE(:P1_DEPTNO); -- -- Loop over array to insert department numbers and sysdate -- FOR i IN 1..l_selected.count LOOP INSERT INTO report_audit_table (report_date, selected_department) VALUES (sysdate, l_selected(i)); END LOOP; END;