[英]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.