関数から複数のリターンを持つことはできません。
関数からコレクションを返すことができます。何かのように
CREATE TYPE string_array
IS TABLE OF VARCHAR2(100);
CREATE OR REPLACE FUNCTION return_string_array
RETURN string_array
IS
l_string_array string_array := new string_array(pr_package.constant1_string,
pr_package.constant2_string);
BEGIN
RETURN l_string_array;
END;
また、パイプラインテーブル機能を作成することもできます。同じタイプを使用すると、複数の行をパイプすることができます。
1 create or replace function pipeline_test
2 return string_array
3 pipelined
4 is
5 begin
6 pipe row('Foo');
7 pipe row('Bar');
8 return;
9* end;
SQL>/
Function created.
SQL> select * from table(pipeline_test);
COLUMN_VALUE
--------------------------------------------------------------------------------
Foo
Bar