Oracle 将游标记录传递给函数
我有一个存储过程。我想从中调用一个函数。希望将检索到的游标记录传递给函数。如何将检索到的游标记录作为函数参数传递,以及如何在函数内部访问它?如何声明函数 创建或替换过程服务更新为Oracle 将游标记录传递给函数,oracle,plsql,oracle10g,sqlplus,Oracle,Plsql,Oracle10g,Sqlplus,我有一个存储过程。我想从中调用一个函数。希望将检索到的游标记录传递给函数。如何将检索到的游标记录作为函数参数传递,以及如何在函数内部访问它?如何声明函数 创建或替换过程服务更新为 cursor c_getData is select * from service_1 where status=5 ; begin dbms_output.enable(null); for rec in c_getData loop fu
cursor c_getData is
select *
from service_1
where status=5 ;
begin
dbms_output.enable(null);
for rec in c_getData loop
function(rec)
假设您真的想要一个函数(这意味着您想要返回一个值)而不是一个过程(不返回值),并且假设您的光标真的是从一个表中选择每一列,您可以声明一个采用锚定的
%ROWTYPE
SQL> create function get_empno( p_rec in emp%rowtype )
2 return number
3 is
4 begin
5 return p_rec.empno;
6 end;
7 /
Function created.
然后从过程中调用该函数
SQL> declare
2 l_empno emp.empno%type;
3 begin
4 for i in (select * from emp)
5 loop
6 l_empno := get_empno( i );
7 dbms_output.put_line( l_empno );
8 end loop;
9 end;
10 /
7369
7499
7521
7566
7654
7698
7782
7788
7839
7844
7876
7900
7902
7934
PL/SQL procedure successfully completed.
非常感谢你提供的信息。我们使用oracle 10g。在Oracle中,有一种方法可以修改游标记录。在前面的问题中,我使用rec变量存储从游标检索到的记录。我是否能够修改记录rec.service_active=sysdate的特定列,以及以后是否可以将其提交到表?@Arav-No。REF游标在Oracle中是只读结构。当然,您可以从记录中读取数据,并在后续的
UPDATE
语句中对基础表使用该数据。