【发布时间】:2016-11-20 18:18:43
【问题描述】:
我想做的是从函数返回结果,所以函数可以通过以下方式使用:
select * from stuff(1)
简化函数示例:
FUNCTION stuff(p_var number) RETURN SYS_REFCURSOR
IS
CURSOR cur(cp_var number) IS
SELECT * FROM dual ;
BEGIN
OPEN cur(p_var);
RETURN cur;
END stuff;
但这不能编译:
Error: PLS-00382: expression is of wrong type
是否可以从以这种方式定义的函数返回光标/结果?
【问题讨论】:
-
您不能使用独立函数来执行此操作,您需要创建一个表类型和一个表函数。看看docs.oracle.com/cd/E11882_01/appdev.112/e10765/…
-
cur是cursor而不是sys_refcursor。您需要将变量声明为cur sys_refcursor,然后使用open cur for select * from dual -
@a_horse_with_no_name Oracle 版本:12c 标准版,12.1.0.2.0