我有一个函数,它接受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
无论如何我能解决这个问题吗?
答案 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