1

XML GATEWAY INBOUND – 调用 API(PL/SQL 记录类型 IN 变量)将数据插入样本表

我正在使用 XML Gateway 将数据推送到 Oracle 应用程序中,并使用“记录类型”作为参数的过程调用。尽管遵循 Oracle XML Gateway 用户指南中描述的过程,但我收到“错误编号”或参数类型不匹配错误

后续步骤:

  1. 我创建了一个示例表XX_CUST_HIST(ID NUMBER, ACCOUNT_NAME VARCHAR2(50), FIRST_NAME VARCHAR2(50), LAST_NAME VARCHAR2(50), TITLE VARCHAR2(50))

  2. 然后我创建了一个包XX_XML_DEMO_API,我们在其中定义了一个记录类型和一个过程。

  3. Record 类型customerRecordType 包含 account_name、first_name、last_name 和 title。

  4. 该过程insert_customer_r 需要 2 个 IN 参数:

    1. p_身份证号码
    2. p_customer 客户记录类型
  5. 该过程会将值插入到 xx_cust_hist 表中

    p_id -> id
    p_customer.account_name -> account_name
    p_customer.first_name -> first_name
    p_customer.last_name -> last_name
    p_customer.title -> title
    

现在我需要XX_XML_DEMO_API.insert_customer_r 从 XML 网关调用该过程。

以下是调用该过程的步骤:

  1. 创建 DTD

    ELEMENT NEW_CUSTOMER_APIR (DATAAREA)
    ELEMENT DATAAREA (CUSTOMER_DATA)
    ELEMENT CUSTOMER_DATA (ID, CUSTOMER_RECORD)
    ELEMENT ID (#PCDATA)
    ELEMENT CUSTOMER_RECORD (ACCOUNT_NAME, FIRST_NAME, LAST_NAME, TITLE)
    ELEMENT ACCOUNT_NAME    (#PCDATA)
    ELEMENT FIRST_NAME (#PCDATA)
    ELEMENT LAST_NAME (#PCDATA)
    ELEMENT TITLE (#PCDATA)
    
  2. 将源和目标的 XML 映射数据定义类型的创建设置为 XML。

    从消息设计器执行XX_XML_DEMO_API.insert_customer_rpost_process 中的过程时,(p_id IN number , p_customer IN customerRecordType)显示 6 个参数而不是 2 个参数(p_id IN number, p_customer IN customerRecordType, account_name IN varchar2, first_name IN varchar2, last_name IN varchar2, title IN varchar2)。正在映射六个参数,而不是过程真正需要的 2 个。

  3. XML地图的测试。事务监视器中的错误消息:

    ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in
    call to 'INSERT_CUSTOMER_R' ORA-06550: line 1, column 7: 
    PL/SQL: Statement ignored -           ECX_ACTIONS.BIND_PROC_VARIABLES  
    

该过程执行并产生了步骤 3 中给出的错误消息。标准文档不清楚应该如何完成。作为 XML 网关技术的新手,我无法知道错误消息可能是什么以及该过程的哪个步骤产生了该消息。任何人都可以帮助我进一步进行吗?

提前致谢。

4

0 回答 0