存储过程更新光标然后返回结果

时间:2013-07-18 14:27:07

标签: sql oracle

我正在尝试创建一个ORACLE存储过程,为游标选择一些信息,在该游标上运行一些更新。然后返回光标的内容,这是为了摆脱涉及创建临时表并在其上运行查询的当前设置。

我尝试过的所有内容都导致游标内容超出了我想要运行的任何更新等范围。

基本上我正在尝试:

  1. 选择一些数据
  2. 对其进行一些处理
  3. 返回部分已处理的数据(基于选择)
  4. 请帮忙!

    我目前的代码是:

    create or replace
    PROCEDURE TEMP_REPORT
    (
      returnTable OUT SYS_REFCURSOR
    )
    IS
      CURSOR resultTable
      IS
      SELECT FNAME,SALARY FROM STAFF;
    
       NAME     VARCHAR2 (10);
       SALARY   VARCHAR2 (10);
    
    BEGIN
    
    
        Update resultTable set Salary = (salary * 1.1);
        --- some more processing here
        ---- now return the datarows
        Cursor returnTable from select name, salary from resultTable where salary > 1000;
    
    
    END TEMP_REPORT;
    

1 个答案:

答案 0 :(得分:1)

什么不能尝试更简单的事情:

declare

   NAME     VARCHAR2 (10);
   SALARY   VARCHAR2 (10);

begin

FOR cid IN ( select FNAME,SALARY FROM STAFF) LOOP

      NAME := cid.NAME;
      SALARY := cid.SALARY;

      DBMS_OUTPUT.
       put_line (
            NAME
         || ' | '
         || SALARY);
END LOOP;

END;