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

Collections are not needed here:

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

您可以尝试使用 TABLE 类型集合来代替 VARRAY。在执行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 回答