1

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

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

本质上,我正在尝试:

  1. 选择一些数据
  2. 对其进行一些处理
  3. 返回一些处理后的数据(基于一个选择)

请帮忙!

我当前的代码大致如下:

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;
4

1 回答 1

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;
于 2013-07-18T14:38:15.520 回答