我正在尝试编译一个返回表的 PL/SQL 函数。但是,我收到错误 PL/SQL: ORA-00932: 不一致的数据类型:预期 UDT 为 CHAR。我需要使用函数返回一个表。该函数只是一个示例。实际函数有200行。
以下是代码:
create or replace type type_TRAUDIT040 as object
(X VARCHAR2(1000),
DOCUMENT_ID VARCHAR2(1000 ),
PR3_ID VARCHAR2(1000 ),
MICROFILM_ID VARCHAR2(1000 ),
CNT_PR3_ID VARCHAR2(1000 ),
CNT_MICRO_ID VARCHAR2(1000 ),
CREATE_USERID VARCHAR2(1000 ),
PAYEE_PRVR_EXT_ID VARCHAR2(1000 ),
RECCNT VARCHAR2(1000 ),
cp_claim_types_desc VARCHAR2(1000 ),
cp_claim_status_desc VARCHAR2(1000 ),
count_document_id VARCHAR2(1000 )
)
create or replace type table_TRAUDIT040 is table of type_TRAUDIT040
以下是功能:
create or replace function fn_traudit040
(
p_Ambulance varchar2
)
return table_TRAUDIT040
as test_type table_TRAUDIT040;
BEGIN
SELECT table_TRAUDIT040(
x,document_id,PR3_ID,MICROFILM_ID,CNT_PR3_ID,CNT_MICRO_ID,create_userid,PAYEE_PRVR_EXT_ID,RecCnt,'1' ,'2','3'
)
BULK COLLECT INTO test_type
FROM TRAUDIT040;
RETURN test_type;
END;
表 TRAUDIT040 的 DDL
CREATE TABLE TRAUDIT040
( X VARCHAR2(1000 ),
DOCUMENT_ID VARCHAR2(1000 ),
PR3_ID VARCHAR2(1000 ),
MICROFILM_ID VARCHAR2(1000 ),
CNT_PR3_ID VARCHAR2(1000 ),
CNT_MICRO_ID VARCHAR2(1000 ),
CREATE_USERID VARCHAR2(1000 ),
PAYEE_PRVR_EXT_ID VARCHAR2(1000 ),
RECCNT VARCHAR2(1000 )
)
错误截图:
提前致谢
将
SELECT table_TRAUDIT040(
更改为 SELECT type_TRAUDIT040(
。 SELECT 子句投影单个记录,然后 BULK COLLECT 将这些记录聚合到嵌套表中。