今天在使用 Oracle sys_refcursor 游标变量时, 抛出错误: 'Execution failed: ORA-00604: 递归 SQL 级别1出现错误', 'ORA-01001: 无效的游标'. 原来是sys_refcursor 游标变量不能用作参数传递. 请见如下 code: PROCEDURE P1( p_cursor OUT sys_refcursor, p_year IN NUMBER ) BEGIN ...... P2(p_cursor, 'test'); END; PROCEDURE P2( p_cursor OUT sys_refcursor, p_company IN VARCHAR2 ) BEGIN ...... END; 需改成 TYPE t_cursor IS REF CURSOR; -- 在 PACKAGE(Spec) 中定义 PROCEDURE P1( p_cursor OUT t_cursor, p_year IN NUMBER ) BEGIN ...... P2(p_cursor, 'test'); END; PROCEDURE P2( p_cursor OUT t_cursor, p_company IN VARCHAR2 ) BEGIN ...... END;