Вывод SOA Gateway xml при использовании refcursor в качестве типа параметра - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь использовать веб-сервис в моем приложении Oracle. В моей процедуре Pl / SQL у меня есть выходной параметр типа refcursor

PROCEDURE LISTE_FOURNISSEUR (liste_fournisseurs out SYS_REFCURSOR) 

Но когда я звоню в веб-сервис, я получаю ответ в этом формате

<LISTE_FOURNISSEURS>
    <Row>
        <Column name="CODE_FOURNISSEUR" sqltype="VARCHAR2">1</Column>
        <Column name="VENDOR_NAME" sqltype="VARCHAR2">IAM</Column>
        <Column name="ICE" sqltype="VARCHAR2">1</Column>
        <Column name="NIF" sqltype="VARCHAR2">1</Column>
        <Column name="RC" sqltype="VARCHAR2">1</Column>
        <Column name="ADDRESS_LINE1" sqltype="VARCHAR2">Casa</Column>
        <Column name="CODE_PORT" sqltype="NUMBER">101</Column>
        <Column name="BANK_ACCOUNT_NUM" sqltype="VARCHAR2"></Column>
    </Row>
    <Row>
        <Column name="CODE_FOURNISSEUR" sqltype="VARCHAR2">1</Column>
        <Column name="VENDOR_NAME" sqltype="VARCHAR2">IAM</Column>
        <Column name="ICE" sqltype="VARCHAR2">1</Column>
        <Column name="NIF" sqltype="VARCHAR2">1</Column>
        <Column name="RC" sqltype="VARCHAR2">1</Column>
        <Column name="ADDRESS_LINE1" sqltype="VARCHAR2">Casa</Column>
        <Column name="CODE_PORT" sqltype="NUMBER">141</Column>
        <Column name="BANK_ACCOUNT_NUM" sqltype="VARCHAR2"></Column>
    </Row>    
</LISTE_FOURNISSEURS>

Но я хочу, чтобы мой результат был следующим:

<LISTE_FOURNISSEURS>
    <FOURNISSEUR>
        <CODE_FOURNISSEUR>1</CODE_FOURNISSEUR>
        <VENDOR_NAME>IAM</VENDOR_NAME>
        <ICE>1</ICE>
        <NIF>1</NIF>
        <RC>1</RC>
        <CADDRESS_LINE1>Casa</CADDRESS_LINE1>
        <CODE_PORT>101</CODE_PORT>
        <BANK_ACCOUNT_NUM></BANK_ACCOUNT_NUM>
    </FOURNISSEUR>
</LISTE_FOURNISSEURS>

Проблема не возникает, когда я использую другие выходные параметры (Varchar2, число, ...) Есть ли способ получить желаемые результаты

1 Ответ

0 голосов
/ 20 ноября 2018

Я предполагаю, что вы используете dbms_xmlgen для генерации XML. Поэтому, если это так, используйте следующую команду для изменения имени тега строки по умолчанию:

dbms_xmlgen.setRowTag( ctx, 'FOURNISSEUR' );

где ctx - ваш контекст инициализирован примерно так:

ctx := dbms_xmlgen.newcontext( ....
...