日期:2014-05-17  浏览次数:21116 次

存储过程中自定义varray数组
create or replace procedure proc_selectAnyone()
as
type type_array is varray(11) of varchar2(2);  --定义长度为11的数组
init_array type_array :=type_array('01','02','03','04','05','06','07','08','09','10','11');
 --初始化数组的11个字符
begin
for i in 1..init_array.count loop
    dbms_output.put_line(init_array(i));
end loop;
end proc_selectAnyone;

执行后,出错!
Warning: Procedure created with compilation errors

怎么回事?是oracle存储过程中不让定义数组?但是我在代码块中执行,没问题的!
------解决方案--------------------
把句柄的()去掉。。。代码应该没问题。
------解决方案--------------------
引用:
create or replace procedure proc_selectAnyone()
as
type type_array is varray(11) of varchar2(2);  --定义长度为11的数组
init_array type_array :=type_array('01','02','03','04','05','06','07','08','09','10','11');
 --初始化数组的11个字符
begin
for i in 1..init_array.count loop
    dbms_output.put_line(init_array(i));
end loop;
end proc_selectAnyone;

执行后,出错!
Warning: Procedure created with compilation errors

怎么回事?是oracle存储过程中不让定义数组?但是我在代码块中执行,没问题的!



CREATE OR REPLACE PROCEDURE TEST1 AS
  TYPE TYPE_ARRAY IS VARRAY(11) OF VARCHAR2(2); --定义长度为11的数组
  INIT_ARRAY TYPE_ARRAY := TYPE_ARRAY('01',
                                      '02',
                                      '03',
                                      '04',
                                      '05',
                                      '06',
                                      '07',
                                      '08',
                                      '09',