いいえ、それは不可能です。
まず、実際には同じ 2 つのタイプを作成する必要はありません。どちらのタイプも varchar2(4000) のテーブルです。したがって、1 つの型を作成し、そこから 2 つの変数を定義するだけで十分です。
複数の型/オブジェクトを返す関数を処理するには、コンテナ オブジェクトを作成し、オブジェクトを埋めて返すことができます。
タイプを作成します:
CREATE OR REPLACE TYPE STRING_LIST as table of varchar2(4000);
次に、2 つのメンバーを持つオブジェクト タイプを作成します。それぞれが上記のタイプのリストです。
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;