1
我是新來的PL/SQL一點點,需要的東西,看起來有點像這樣:如何將ref遊標參數聲明爲對象方法?
create type base as object (
unused number,
member procedure p(c in ref cursor)
) not final;
create type child1 under base (
overriding member procedure p(c in ref cursor) as
t table1%rowtype
begin
fetch c into t;
-- process table1 row
end;
);
create type child2 under base (
overriding member procedure p(c in ref cursor) as
t table2%rowtype
begin
fetch c into t;
-- process table2 row
end;
);
procedure generic_handler(o in base, c in ref cursor) as
begin
o.p(c);
end;
o1 child1 := child1(0)
o2 child2 := child2(0)
c ref cursor
open c for select * from table1;
generic_handler(o1, c);
open c for select * from table2;
generic_handler(o2, c);
基本上,我需要知道如何執行表,獨立行動委託表中的一個通用的慣例 - 派生類的特定任務。
上述對象方法以'ref cursor'不編譯 - 編譯器說'需要定義遊標'。所以當然我嘗試過在所有地方都輸入'generic_cursor'作爲引用遊標',但是無法編譯它。
,我發現幾乎沒有試圖追查傳遞裁判光標對象方法的語法時。這讓我覺得,也許我試圖做一些愚蠢的事情。
我正在努力做什麼是有道理的?如果是這樣,我錯過了什麼?我在哪裏可以定義generic_cursor,以便我可以將它用作對象方法參數類型?
sys_refcursor做到了,謝謝!我現在在第11章(!)中看到他們解釋說你可以使用它而不必先創建一個引用遊標類型。 我仍然覺得我有點濫用語言,使它看起來更像其他任何OO語言,並且爲了節省自己寫一些代碼...很快就找到了。 :) 再次感謝您的幫助。 – 2009-08-12 12:32:03