SYS_REFCURSOR Type値を返す関数から選択したいと思います。
例えば :
CREATE OR REPLACE FUNCTION my_funtion (
my_param IN VARCHAR2)
RETURN SYS_REFCURSOR
IS
l_return SYS_REFCURSOR;
BEGIN
OPEN l_return FOR
SELECT last_name, first_name
FROM employees
WHERE id = my_param
ORDER BY employee_id;
RETURN l_return;
END my_funtion;
私はこれに似た何かをしたいと思います:
select * from my_function('id015');
あるいは :
select alias.last_name from my_function('id015') alias;
select * from table(xmlsequence( myfunc() ))
を使用してみてください。この場合、列でxmlを取得します。
または、この例を試し、refcursorからフィールドを抽出してください
select extractvalue(column_value,'/ROW/FIRST_NAME') first_name , extractvalue(column_value,'/ROW/LAST_NAME') last_name from table(xmlsequence(f()));
FIRST_NAME | LAST_NAME :------ :-------- ドナルド|ダック ミッキー|マウス
dbfiddle ---(ここ
PS。 xmlオーバーヘッドについて注意してください。
これは私のために働きました:
variable x refcursor
set autoprint on
exec :x := my_function('id015')