以下のように表示されます。
(日本語)
ORA-06533: サブスクリプトがカウントを超えています。
(英語)
ORA 06533: Subscript beyond count
発生パターン
このエラーは以下のような場合に発生します。
- 配列を初期化せずに使用した
- 配列の要素数を超えた添え字を指定して配列にアクセスした
エラー例
例として、以下のプロシージャの13行目をコメントアウトして実行すると
ORA-06533が発生します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
CREATE OR REPLACE PROCEDURE P_SAMPLE_VARRAY IS --①VARCHAR2(20)、要素数10の配列を定義 TYPE varr IS VARRAY(10) OF VARCHAR2(20); --②上記で定義した配列を宣言する ar varr := varr(); BEGIN --②5番目まで初期化する ar.extend(5); --③インデックス1~4に値をセットする ar(1) := 'hoge1'; ar(2) := 'hoge2'; ar(3) := 'hoge3'; ar(4) := 'hoge4'; --④COUNTを出力してみる DBMS_OUTPUT.PUT_LINE('COUNT数:' || ar.COUNT); --⑤全ての要素を取得して出力してみる FOR i IN 1..ar.COUNT LOOP DBMS_OUTPUT.PUT_LINE(ar(i)); END LOOP; END; / |
- 実行例
- SQL> exec P_SAMPLE_VARRAY; BEGIN P_SAMPLE_VARRAY; END; * 行1でエラーが発生しました。: ORA-06533: サブスクリプトがカウントを超えています。 ORA-06512: "TEST.P_SAMPLE_VARRAY", 行16
対処法
- 配列を使用する時は必ず初期化してから使用する。
- 配列の要素数を超える添え字を指定して配列にアクセスしない。