【问题标题】:Issue in parsing jdbc call procedure output unresolvedResultSets解析 jdbc 调用过程输出 unresolvedResultSets 时出现问题
【发布时间】:2019-06-07 10:57:50
【问题描述】:

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

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

当我运行它时,我可以在 parseXML 中看到输出,(我有未检查的验证输出),

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

可能是什么问题? 这似乎是一项简单的任务,但由于一些愚蠢的问题,我仍然陷入困境。 我在这里错过了什么?

请帮忙

谢谢, 戈帕尔

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

【问题讨论】:

标签: tibco-business-works


【解决方案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 驱动程序以获得更好的性能

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

其他更高级的选项

【讨论】:

    猜你喜欢
    • 2020-07-27
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多