1
我想创建一个ORACLE存储过程,选择一些信息到游标中,对该游标运行一些更新。然后返回光标的内容,这是为了摆脱当前的设置,包括创建临时表并运行查询。我曾尝试存储过程更新一个光标,然后返回结果
一切都导致光标被淘汰的任何内容更新等,我想运行范围的内容..
基本上我想:
- 选择一些数据
- 做就可以进行一些处理
- 返回一些经处理的数据的(基于选择)
请帮忙!
我当前的代码是沿着线:
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;
我不认为你可以在光标更新数据。游标只是指向数据集的指针(即select语句)。您可以尝试的一件事是使用集合(用户定义类型的嵌套表) –
您不能更改“在光标中”的数据。游标不是某种数据结构,其中包含所有可以操作的结果。 –
至于你想运行的“更新”,那些超级复杂?有了一些SQL体操,你*可能*能够在单个查询中计算所有内容。如果不是,流水线功能可能适合你。几个月前,我终于开始使用我的第一个流水线功能,而且这非常容易,尽管您必须创建至少两个Oracle TYPE,而某些DBA可能会忽略它。 –