set serveroutput on;
declare
type dates is varray(7) of varchar2(10); --在这里设定一个最大上限
v_dates dates:=dates('Monday','tuesday','wesdnesday');
begin
dbms_output.put_line(v_dates(1));
dbms_output.put_line(v_dates(2));
dbms_output.put_line(v_dates(3));
end;
/
declare
type dates is varray(7) of varchar2(10); --在这里设定一个最大上限
v_dates dates:=dates('Monday','tuesday','wesdnesday');
begin
dbms_output.put_line(v_dates(1));
dbms_output.put_line(v_dates(2));
dbms_output.put_line(v_dates(3));
end;
/
declare
type dates is varray(7) of varchar2(10); --在这里设定一个最大上限
v_dates dates:=dates('Monday','tuesday','wesdnesday');
begin
dbms_output.put_line(v_dates(1));
dbms_output.put_line(v_dates(2));
dbms_output.put_line(v_dates(3));
end;
------
varray(7)我希望7是可变的,或在begin.. end间能改变其大小。
set serveroutput on;
declare
b int;
begin
b:=7;
declare
type dates is varray(b) of varchar2(10); --b为变量
v_dates dates:=dates('Monday','tuesday','wesdnesday');
begin
dbms_output.put_line(v_dates(1));
dbms_output.put_line(v_dates(2));
dbms_output.put_line(v_dates(3));
end;
end;
declare
icode number:=0;
n number:=10;
type numcode is varray(n) of number(12,0);
begin
select floor(dbms_random.value(1,n)) into icode from dual;
insert into testcode values(icode);
commit;
end;
就是报错啊, 错误如下:
type numcode is varray(n) of number(12,0);
*
ERROR 位于第 4 行:
ORA-06550: 第 4 行, 第 26 列:
PLS-00103: 出现符号 "N"在需要下列之一时:
<a number>
符号 "<a number>在 "N" 继续之前已插入。
有高手能解决这个问题吗?
size_limit is a positive integer literal representing the maximum number of
elements in the array. When defining a VARRAY type, you must specify its
maximum size. In the following example, you define a type that stores up to 366
dates:DECLARE
TYPE Calendar IS VARRAY(366) OF DATE;使用table类型。create or replace procedure dd is
i pls_integer;
type idarr is table of int;
rec idarr:=idarr();
begin
for i in 1..10 loop
rec.extend;
rec(i):=i;
dbms_output.put_line(rec(i));
end loop;
end;