我有一個存儲過程,我從一組記錄(費用)中填充表格,然後將這些行放入參考光標中。將記錄傳遞給參考光標
TYPE rctl IS REF CURSOR ;
Fees t_Fees;
type t_Fees is table of t_FeeRecord index by binary_integer;
type t_FeeRecord is record(
description varchar2(80),
amount number(12,2),
taxAmount number(12,2)
);
--populate the Fees array
INSERT into TEMPORARY_FEE(description,amount,tax) values(Fees(i).description,Fees(i).Amount,Fees(i).Tax);
OPEN rc1 FOR SELECT description,amount TEMPORARY_FEES;
這一切工作正常(填充記錄,插入到臨時表和填充裁判光標),但有可能消除表,只是直接通過我的記錄陣列進ref_cursor
?我必須將結果作爲ref_cursor
返回給第三方應用程序。
我想我可能會嘗試這樣的事情。
OPEN rc1 FOR
SELECT * FROM TABLE(cast(Fees as t_FeeRecord));
但我得到一個無效的數據類型。
與包中定義的類型不同,因爲PL/SQL類型不能在SQL中使用(即使該SQL本身在PL/SQL中)。你的轉換也是錯誤的,'table()'不能對記錄類型進行操作。如果't_fees'在SQL級別用'create type'聲明,那麼你可以只從表格(費用)中選擇*。這是可行的嗎? –