在Oracle中创建包时,此上下文中不支持对象



嗨,我正试图执行以下语句来创建一个包,但我收到一个错误,说

Error(3,1): PLS-00540: object not supported in this context.

当试图将其更改为RECORD时,我得到了另一个错误

Error(3,32): PLS-00103: Encountered the symbol "RECORD" when expecting one of the following:     
object opaque The symbol "object was inserted before "RECORD" to continue. 

包定义尝试执行

CREATE OR REPLACE PACKAGE        "PKG_LOAN_LOGIC_SERVICE_V2" AS
TYPE LOAN_LOGIC_RESULT_TYPE AS OBJECT (
loanid NUMBER,
ret_value varchar2(500),
xPath varchar2(200)
);
TYPE LOAN_LOGIC_RESULTS_TABLE IS TABLE OF LOAN_LOGIC_RESULT_TYPE;
procedure PR_CORAL_LOAN_LOGIC( 
in_loan_id      IN   wcts.loans.loan_id%TYPE,
in_trans_id     IN   wcts.loans.loan_id%TYPE,
as_errm            out varchar2,
out_order_contents_tab out LOAN_LOGIC_RESULTS_TABLE
);
END PKG_LOAN_LOGIC_SERVICE_V2;

当我尝试在另一个独立的SQL Developer窗口中执行用户定义的类型时,它执行成功。

CREATE OR REPLACE TYPE LOAN_LOGIC_RESULT_TYPE AS OBJECT (
loanid NUMBER,
ret_value varchar2(500),
xPath varchar2(200)
);
CREATE OR REPLACE TYPE LOAN_LOGIC_RESULTS_TABLE AS TABLE OF LOAN_LOGIC_RESULT_TYPE;

为什么不允许我在包裹里跑?或者我将如何在包中创建这些类型

更新:

create or replace procedure PR_CORAL_LOAN_LOGIC( 
in_loan_id      IN   wcts.loans.loan_id%TYPE,
in_trans_id     IN   wcts.loans.loan_id%TYPE,
as_errm            out varchar2,
out_order_contents_tab out LOAN_LOGIC_RESULTS_TABLE
)
is 
begin
for o in (SELECT    xpath_name    FROM  loan_logic  WHERE   attribute = 
upper(TRIM('STATUS_0')))
loop
-- How i will get the user defined type here tp assign the values 
--Assign the column values while iterating         
END LOOP;
end PR_CORAL_LOAN_LOGIC;

根据Oracle文档

必须使用SQL语句CREATE TYPE 定义对象类型

编辑

例如

create or replace procedure PR_CORAL_LOAN_LOGIC(out_order_contents_tab out LOAN_LOGIC_RESULTS_TABLE)
is
obj LOAN_LOGIC_RESULT_TYPE;
begin
obj := LOAN_LOGIC_RESULT_TYPE(2, 'return value', 'some/path');
out_order_contents_tab := LOAN_LOGIC_RESULTS_TABLE();
out_order_contents_tab.extend;
out_order_contents_tab(1) := obj;

网上有很多例子,包括使用集合。更不用说Oracle文档了。

最新更新