首先让我们从更正您的代码开始。我可以看到您发布的代码无法编译,并且会引发问题。正确的代码如下:
CREATE OR REPLACe PACKAGE xx_bal_apiAS TYPE challan_rec IS RECORD ( challan_number VARCHAR2 (40), challan_amount NUMBER ); TYPE rec IS TABLE OF challan_rec index by pls_integer; FUNCTION get_challan (foo NUMBER) RETURN rec;END;/CREATE OR REPLACE PACKAGE BODY xx_bal_apiAS FUNCTION get_challan (foo NUMBER) RETURN rec IS cr rec; BEGIN cr (1).challan_number := '00002154215'; cr (1).challan_amount := foo; RETURN cr; END get_challan;END;
执行此代码时,您可能会遇到类似的问题
invalid datatype。这是因为a
RECORD仅限在中使用
PLSQL。
select xx_bal_api.get_challan(2265) from dual;
ORA-00902:无效的数据类型
最好的方法是先创建一个对象的a
OBJECT和a
TYPE,然后
return在您的函数中创建它:
CREATE OR REPLACe TYPE challan_rec IS OBJECT( challan_number VARCHAR2 (40), challan_amount NUMBER);/ CREATE OR REPLACE Type rec is table of challan_rec;/ CREATE OR REPLACE FUNCTION get_challan(foo number) return rec is cr rec:=rec(); begin cr.extend(); cr(1):= challan_rec('00002154215',foo); return cr; end get_challan; end;/执行:
SQL> select get_challan(2265) from dual; /



