不,它不可能。
首先,不需要创建两个实际上相同的类型。这两种类型都是 varchar2(4000) 的表。所以创建一种类型并从中定义两个变量就足够了。
要处理返回多个类型/对象的函数,您可以创建一个容器对象,填充该对象并返回它。
所以创建类型:
CREATE OR REPLACE TYPE STRING_LIST as table of varchar2(4000);
然后创建一个具有两个成员的对象类型,每个成员都是上述类型的列表
create or replace type TWO_STRING_LISTS as object
(first_list STRING_LIST,
second_list STRING_LIST
);
现在在您的函数中,您准备列表,创建一个对象并将列表放入其中,然后返回它:
create or replace function in_list(p_string in varchar2,p_delimiter in varchar2)
return TWO_STRING_LISTS is
list1 STRING_LIST;
list2 STRING_LIST;
begin
//fill the lists
return TWO_STRING_LISTS(list1,list2);
end;
当您从 in_list 函数取回对象时,您可以访问列表。
declare
TWO_STRING_LISTS lists;
begin
//some code
........
lists := in_list(........);
//reference first list
lists.first_list .....
end;