0

私はこのようなものを持っていますが、ORA-06533: カウントを超えたサブスクリプトというエラーが発生しました。出力タブの「個別選択」ステートメントからのすべての値を表示したい。誰でも助けることができますか?ありがとう!

DECLARE
   TYPE v_chks_array IS VARRAY (10) OF VARCHAR2 (50);

   arrSRCs   v_chks_array;
BEGIN
   arrSRCs := v_chks_array ();
   arrSRCs.EXTEND (10);

   SELECT /*+parallel (a,4)*/
         DISTINCT a.src_table
     BULK COLLECT INTO arrSRCs
     FROM hcr_dm.hcr_dm_fact a;

   DBMS_OUTPUT.put_line (arrSRCs (10));
END;
4

2 に答える 2

1

ここではコレクションは必要ありません。

begin
    for results in
    (
        select /*+ parallel (a,4) */ distinct a.src_table
        from hcr_dm.hcr_dm_fact a;
    ) loop
        dbms_output.put_line(results.src_table);
    end loop;
end;
/
于 2014-10-30T01:57:57.047 に答える
0

VARRAY の代わりに、TABLE タイプのコレクションを試すことができます。実行中に保持するレコード数の柔軟性が向上しますBULK COLLECT

Create or replace type v_chks_array IS TABLE OF VARCHAR2 (500);

詳細については、http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/collections.htmを参照してください。

于 2014-10-29T21:37:54.647 に答える