返回表的 PL/SQL 函数未编译

问题描述 投票:0回答:1

我正在尝试编译一个返回表的 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 )
   )

错误截图:

enter image description here

提前致谢

oracle plsql plsql-package
1个回答
0
投票

SELECT table_TRAUDIT040(
更改为
SELECT type_TRAUDIT040(
。 SELECT 子句投影单个记录,然后 BULK COLLECT 将这些记录聚合到嵌套表中。

© www.soinside.com 2019 - 2024. All rights reserved.