Oracle
從返回 CURSOR 的函式中選擇
我想從返回 SYS_REFCURSOR 類型值的函式中進行選擇。
例如 :
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 | 姓 :--------- | :-------- 唐納德 | 鴨子 米奇 | 老鼠
dbfiddle在這裡
PS。關於 xml 成本的注意事項。
這對我有用:
variable x refcursor set autoprint on exec :x := my_function('id015')