我有一个存储过程,我从一组记录(费用)中填充表格,然后将这些行放入参考光标中。将记录传递给参考光标
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'声明,那么你可以只从表格(费用)中选择*。这是可行的吗? –