2017-07-24 88 views
0

无法将值存储到“名称”数组中。请帮助我解决错误。如何在plsql中动态添加内容

declare 
type name is varray(50) of varchar2(10); 
abc varchar2(50); 
names name:=name(); 
begin 
    for i in 0..4 
    loop 
     select cname into abc from customer where cid=1; 
     names(i):=abc; 
     dbms_output.put_line(names(i)); 
    end loop; 
end; 

我是新来的PL/SQL,我试图将元素添加到我的数组,但我得到了一些错误,如下所示。

ORA-06532:下限值

+0

在PL/SQL索引从1开始,在将一个新元素添加到一个空的VARRAY之前,您必须对其进行扩展,使用EXTEND来完成。 – Himanshujaggi

+0

谢谢!!!!!得到了输出:) !!!! –

回答

1

在PL/SQL的循环需要与1

而且开始,省前值以外,你需要extend记录变量。

而且,你的类型为varray(50) of VARCHAR2(10),而abc是大小50

declare 
    type name is varray(50) of varchar2(50); 
    abc varchar2(50); 
    names name:=name(); 
begin 
    for i in 1..4 
    loop 
     select cname into abc from customer where cid=1; 
     names.extend(1); 
     names(i):=abc; 
     dbms_output.put_line(names(i)); 
    end loop; 
end; 

的变量为什么你需要EXTEND - Standard Oracle DOC

+0

非常感谢!得到了输出:) –

0
declare 
    type name is varray(50) of varchar2(10); 
    abc varchar2(50); 
    names name:=name(); 
    begin 
     for i in 1..4 
     loop 
      select cname into abc from customer where cid=1; 
      names.extend; 
      names(i):=abc; 
      dbms_output.put_line(names(i)); 
     end loop; 

end; 

1)数组从1

启动

2)type name is varray(50) of varchar2(10);表示阵列的最大长度为50,与初始长度不相关。

+0

非常感谢!得到了输出! –