Проблема в разборе вывода процедуры вызова jdbc unresolvedResultSets - PullRequest
1 голос
/ 07 июня 2019

Я пытаюсь прочитать вывод процедуры вызова JDBC, проанализировать его и сопоставить с следующим действием,

Я создал схему, аналогичную выводу, полученному в unresolvedResultSets, и поместил parseXML после процедуры вызова JDBC.

Когда я запускаю его, я вижу вывод в parseXML, (я не отмечал подтверждение вывода),

и затем я сопоставляю элемент ResultSets \ resuletSet1 \ Record1 \ ID с маппером. Однако он не может прочитать идентификатор из выходных данных parseXML и передает пустое значение в качестве входных данных.

в чем может быть проблема? Это кажется такой простой задачей, но я все еще не уверен из-за какой-то глупой проблемы. Что мне здесь не хватает?

Пожалуйста, помогите

спасибо, Гопал

Я попытался передать элемент сопоставления как ResultSets \ resuletSet1 [1] \ Record1 [1] \ ID, но все еще проблема

1 Ответ

0 голосов
/ 08 июня 2019

Вам нужно создать схему типа

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xsd:element name="Resultsets">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="ResultSet1">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="Record1" minOccurs="0" maxOccurs="unbounded">
                                <xsd:complexType>
                                    <xsd:sequence>
                                        <xsd:element name="PROCEDURE_OUTPUT_COLUMN1" type="xsd:string" nillable="true" minOccurs="0"/>
                                        <xsd:element name="PROCEDURE_OUTPUT_COLUMN2" type="xsd:string" nillable="true" minOccurs="0"/>
                                        <xsd:element name="PROCEDURE_OUTPUT_COLUMN2" type="xsd:string" nillable="true" minOccurs="0"/>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

Обратите внимание, что имена элементов "PROCEDURE_OUTPUT_COLUMN1", "PROCEDURE_OUTPUT_COLUMN2" ... должны точно совпадать с именами выходных данных процедуры.

пример процедуры (ORACLE)

    create or replace PROCEDURE "GET_COLUMNS" (

            p_recordset OUT SYS_REFCURSOR

            ) AS

             sql_stmt   VARCHAR2 (32600);


            BEGIN
              sql_stmt :=

              BEGIN
                 OPEN p_recordset FOR sql_stmt;
              EXCEPTION WHEN OTHERS THEN
                p_sql := 'ERROR in the SQL statment: ' || sql_stmt;
              END;

            END GET_COLUMNS;

Затем вы можете отобразить вывод процедуры в ParseXML

Вам также может понадобиться использовать собственный драйвер базы данных вместо драйвера Tibco для повышения производительности

Также см. Как анализировать неразрешенный набор результатов в палитре Tibco BW JDBC

для других более продвинутых опций

...