Проблема при анализе вывода процедуры вызова jdbc, неразрешенные результаты

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

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

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

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

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

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

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

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


person Gopal    schedule 07.06.2019    source источник
comment
см. stackoverflow.com/questions/48625153/   -  person David Abragimov    schedule 07.06.2019


Ответы (1)


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

<?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

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

person David Abragimov    schedule 07.06.2019