從函數返回時,我在從PL/SQL中的打開ref_cursor中提取時遇到問題。當我在函數的主體中放置完全相同的讀取語句來代替返回語句時,它可以正常工作。Oracle函數 - 從返回的提取ref_cursor - ORA-01001:無效光標
function GetBound(p_lat in number, p_long in number) return ref_cursor
IS
v_rc_ref_cursor sys_refcursor;
BEGIN
open v_rc_ref_cursor for select * from state_bound;
return v_rc_ref_cursor;
END;
現在,如果我把它從一個匿名PLSQL塊我得到的錯誤「ORA-01001:無效光標」
DECLARE
v_rc_ref_cursor sys_refcursor;
v1 number(38);
v2 varchar2(50);
v3 number(38);
v4 varchar2(50);
BEGIN
v_rc_ref_cursor := GetBound(122.0928,-18.6974);
fetch v_rc_ref_cursor into v1, v2, v3, v4;
close v_rc_ref_cursor;
DBMS_OUTPUT.PUT_LINE(v1 || v2 || v3 || v4);
END;
但是如果我把匿名塊到實際的功能,它的所有作品。見下:
function GetBound(p_lat in number, p_long in number) return ref_cursor
IS
v_rc_ref_cursor sys_refcursor;
v1 number(38);
v2 varchar2(50);
v3 number(38);
v4 varchar2(50);
BEGIN
open v_rc_ref_cursor for select * from state_bound;
-- return v_rc_ref_cursor;
fetch v_rc_ref_cursor into v1, v2, v3, v4;
close v_rc_ref_cursor;
DBMS_OUTPUT.PUT_LINE(v1 || v2 || v3 || v4);
END;
我已經四處看了,發現一些人做我在這裏做的事情,所以據我所知,這應該工作。例如。 https://community.oracle.com/thread/888365
有人能幫我弄清楚我在這裏做錯了嗎?
將'GetBound'的返回類型更改爲'sys_refcursor'並查看是否有幫助。 –