PL/SQLの添字配列の値が配列

何度やっても忘れちまうんで備忘録。

ちなみにPL/SQLの通常の配列インデックスは1オリジン参考

SET SERVEROUTPUT ON

--
-- 添字配列の値が配列の例
--
DECLARE
  TYPE tNameArray IS VARRAY(2) OF VARCHAR2(128);
  TYPE tSoejiArray IS TABLE OF tNameArray INDEX BY VARCHAR2(6);
  vTargetArray tSoejiArray;
  vKey         VARCHAR2(6);

  -- 配列初期設定
  PROCEDURE initArray(P_ARRAY OUT tSoejiArray) IS
  BEGIN
    p_ARRAY('000001') := tNameArray('ラーメン’、’らあめん');
    p_ARRAY('000002') := tNameArray('つけ麺’、’つけめん');
  END;

BEGIN
  initArray(vTargetArray);

  DBMS_OUTPUT.PUT_LINE('コード,名前,ふりがな');
  vKey := vTargetArray.FIRST;
  WHILE vKey IS NOT NULL LOOP
    DBMS_OUTPUT.PUT_LINE(vKey || ',' || vTargetArray(vKey)(1) || ',' || vTargetArray(vKey)(2));
    vKey := vTargetArray.NEXT(vKey);
  END LOOP;

EXCEPTION
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('その他エラー');
    DBMS_OUTPUT.PUT_LINE('ErrCode: ' || sqlcode);
    DBMS_OUTPUT.PUT_LINE('ErrMsg : ' || sqlerrm);
END;
/