数组无法正常工作

时间:2015-10-01 09:19:42

标签: oracle

我有一个函数,它接受1个参数,abc(parameter1 IN varchar2)

在参数中,我将使用逗号分隔的字符串: 例如,Abc(' 1,2,a')

Type vartype is varray(10) of varchar2(50);
X1 vartype:= vartype (parameter1);

For X in X1.count loop
    Dbms_output.put_line(x1(X));
End loop;

DBMS输出给了我

1,2,a

而不是

1 
2
A

无论如何我能解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

For my understanding your function parameter will be single value.

If you are mentioned varray, you should give format like ('1','2','a','b')
For example :-
declare
Type vartype is varray(10) of varchar2(50);
X1 vartype:=vartype ('1','2','a','b');
begin
For X in 1..X1.count loop
    Dbms_output.put_line(x1(x));
End loop;
end;
/

Above query will help you to understand concepts of Varray

答案 1 :(得分:0)

您正在将varchar2变量传递给varray,并且它被认为是第一个参数;所以你的数组只包含一个元素(parameter1的内容)。在传递给varray之前,必须将字符串拆分为子字符串。 以下是Oracle documentation

的摘录
DECLARE    TYPE ProjectList IS VARRAY(50) OF VARCHAR2(16);   
    accounting_projects ProjectList;
BEGIN
    accounting_projects :=  ProjectList('Expense Report', 'Outsourcing', 'Auditing'); 
END;

要将字符串拆分为子字符串,您可以查看一些解决方案here