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可能會忽略它。 –