ホーム > アプリケーションの構築 > ページ・レベル・アイテムの理解 > 複数選択リスト・アイテムでの操作
複数選択リスト・アイテムでの操作 |
![]() 前へ |
![]() 次へ |
複数選択アイテムは複数選択リストのフォーム要素としてレンダリングされ、複数選択リストまたはシャトル・アイテム・タイプのいずれかになります。送信されると、選択した値は単一のコロンで区切られた文字列に戻されます。このフォーマットの値は2通りの方法で処理できます。
INSTRファンクションの使用
APEX_UTIL.STRING_TO_TABLEファンクションの使用
たとえば、部門の複数選択リストから選択した部門によって限定されているEMP表およびDEPT表に関するレポートがあるとします。まず、次の問合せを使用して、複数選択アイテム「P1_DEPTNO」を作成します。
SELECT dname, deptno FROM dept
次に、次のように入力して、選択した部門内の従業員のみを戻します。
SELECT ename, job, sal, comm, dname
FROM emp e, dept d
WHERE d.deptno = e.deptno
AND instr(':'||:P1_DEPTNO||':',':'||e.deptno||':') > 0
次に、複数選択アイテム「P1_DEPTNO」で選択した値をプログラムで処理するとします。これを行うには、APEX_UTIL.STRING_TO_TABLEファンクションを使用して、コロンで区切られた文字列をPL/SQL配列に変換します。次の例では、選択した部門を問合せの日付が含まれている監査表に挿入する方法を示します。
DECLARE
l_selected APEX_APPLICATION_GLOBAL.VC_ARR2;
BEGIN
--
-- Convert the colon separated string of values into
-- a PL/SQL array
l_selected := APEX_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;