Oracle XML Gateway - сопоставление XML с API приложений Oracle - неверное число или ошибка несоответствия типов аргументов - PullRequest
1 голос
/ 23 февраля 2012

XML GATEWAY INBOUND - ВЫЗОВ API (PL / SQL-тип записи IN переменная) ДЛЯ ВСТАВКИ ДАННЫХ В ОБРАЗЕЦ ТАБЛИЦЫ

Я использую XML Gateway для передачи данных в Oracle Apps, используя вызов процедуры с «Типом записи» в качестве параметра. Я получаю «неправильное число» или ошибку несоответствия типов аргументов, несмотря на то, что я следую процессу, описанному в Руководстве пользователя 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. Тип записи customerRecordType содержит имя учетной записи, имя, фамилию и название.

  4. Процедура insert_customer_r принимает 2 аргумента IN:

    1. p_ id номер
    2. p_customer customerRecordType
  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_r в post_process от дизайнера сообщений вместо 2 (p_id IN number , p_customer IN customerRecordType) параметров отображается 6 параметров (p_id IN number, p_customer IN customerRecordType, account_name IN varchar2, first_name IN varchar2, last_name IN varchar2, title IN varchar2). Отображаются шесть параметров вместо двух, которые действительно нужны процедуре.

  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 Gateway, я не могу понять, каким может быть сообщение об ошибке и какой этап процесса породил это сообщение. Может ли кто-нибудь помочь мне продолжить?

Заранее спасибо.

...