前へ
前へ
 
次へ
次へ

複数選択リスト・アイテムでの操作

複数選択アイテムは複数選択リストのフォーム要素としてレンダリングされ、複数選択リストまたはシャトル・アイテム・タイプのいずれかになります。送信されると、選択した値は単一のコロンで区切られた文字列に戻されます。このフォーマットの値は2通りの方法で処理できます。

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;

参照:

Oracle Application Express APIリファレンスの「STRING_TO_TABLEファンクション」