可变数组

最近更新时间: 2024-10-17 17:10:00

可变数组是一个其元素数可以从零(空)到声明的最大大小变化的数组。当创建可变数组时,必须指定可变数组的最大长度。

要访问varray变量的元素,请使用语法variable_name(index)。index的下限是1;上限是当前的元素数。

示例:

set enable_oracle_compatible=on;
--匿名块中使用varray,使用dbms_output 输出array中的数据
declare
    type v_arr is varray(10) of varchar2(30);
    my_arr v_arr:= v_arr('1','2','3');
begin
    for i in 1..my_arr.count
    loop
    perform dbms_output.serveroutput('t');
    perform     dbms_output.put_line(my_arr[i]);
    end loop;
end;
/

--初始化1个字符后,输出溢出值和正常值
declare
    type v_arr is varray(3) of varchar2(30);
    my_arr v_arr:= v_arr(null);
begin
    my_arr[1]:='插入';
        perform dbms_output.serveroutput('t');
    perform DBMS_OUTPUT.PUT_LINE(my_arr[1]);
        perform dbms_output.serveroutput(my_arr[2]);
        exception WHEN others THEN
     BEGIN
         perform dbms_output.serveroutput('t');
     perform DBMS_OUTPUT.PUT_LINE('error ...');
         my_arr.extend;
         perform DBMS_OUTPUT.PUT_LINE(my_arr[1]||'--'||my_arr[2]);
         end;
end;
/
--输出溢出值
declare
    type v_arr is varray(3) of varchar2(30);
    my_arr v_arr:= v_arr(null);
begin
    my_arr[4]:='插入';
    perform DBMS_OUTPUT.PUT_LINE(my_arr[4]);
end;
/

declare
    type v_arr is varray(3) of varchar2(30);
    my_arr v_arr:= v_arr(null);
begin
    my_arr[2]:='插入';
    perform DBMS_OUTPUT.PUT_LINE(my_arr[2]);
end;
/

--验证nesttable 类型
declare
  type dateArray is table of varchar2(10);
  date_val dateArray:=dateArray('20201231','20200930');
  begin
    for i in 1 .. date_val.count loop
      perform dbms_output.serveroutput('t');
      perform  dbms_output.put_line('结果:'||date_val[i]);
    end loop;
end;
/