繁体   English   中英

如何在plsql上为return语句编辑游标属性?

[英]How to edit a cursor attribute for a return statement on plsql?

我想从一个函数返回一个游标,我已经读到可以使用:

return sys_refcursor

接着

open curs for select* from mytable;
return curs;

我尝试了curs.att:='something'但出现错误

另请阅读我可以做自己的类型:

 TYPE type IS REF CURSOR RETURN mytable%ROWTYPE;

然后

CURSOR cur IS
    SELECT* FROM mytable;
var cur%ROWTYPE;

BEGIN
OPEN cur;
FETCH cur INTO var;
var.att = 'something';
RETURN var;

这次我没有在assign而是在return语句中得到一个错误。

如果我将var类型更改为我的类型,则无法获取该值。

我不想编辑光标,但不能编辑表格,该怎么办?

游标是只读结构。 更改将从游标获取的数据的唯一方法是更改​​用于打开游标的SQL语句或更改基础表中的数据。

虽然可以将游标从一个PL / SQL块返回到另一个,但很少有合适的体系结构。 当您要将结果返回到知道如何使用游标的客户端应用程序时,通常适合使用SYS_REFCURSOR

您是否真的要返回游标? 还是要返回记录类型? 您发布的第二个代码段似乎正在尝试返回记录-这当然是可能的,但是您需要声明该函数返回记录而不是游标。 也就是说,声明中的RETURN语句需要为RETURN mytable%ROWTYPE而不是RETURN type 例如,如果要基于EMP表返回记录

create or replace function get_emp( p_empno in emp.empno%type )
  return emp%rowtype
is
  l_rec emp%rowtype;
begin
  select *
    into l_rec
    from emp
   where empno = p_empno;
  l_rec.sal := l_rec.sal + 100;
  return l_rec;
end;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM