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
语句中对基础表使用该数据。