解析jdbc调用过程输出unresolvedResultSets

时间:2019-06-07 10:57:50

标签: tibco-business-works

我正在尝试读取JDBC调用过程的输出并将其解析并将其映射到下一个活动,

我创建了一个类似于在unresolvedResultSets中接收到的输出的架构,并将parseXML放在JDBC调用过程之后。

当我运行它时,我可以在parseXML中看到输出(我已经取消了验证输出)

,然后将元素ResultSets \ resuletSet1 \ Record1 \ ID映射到mapper。 但是,它无法从parseXML的输出中读取ID并传递空值作为输入。

可能是什么问题? 看来这是一个简单的任务,但由于一些愚蠢的问题,我仍然感到震惊。 我在这里想念什么?

请帮助

谢谢, 戈帕尔

我尝试将映射元素作为ResultSets \ resuletSet1 [1] \ Record1 [1] \ ID传递,仍然出现问题

1 个答案:

答案 0 :(得分:0)

您需要创建模式

<?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驱动程序

另请参阅How to parse unresolved result set in Tibco BW JDBC palette

其他更高级的选项