1

我需要从 Tibco BW JDBC 调色板连接到远程 MS SQL 服务器存储过程,以检索我们不知道结果集列名的结果集。

在我的本地环境中,我模拟了返回预期结果集但使用虚拟列名的过程。因此,在解析 unresolvedResultSet 时,如果结果集中的列名与输出中定义的列名不同,则会引发错误。

如果我使用“结果集作为模式”选项,那么如果列名不同,它也会在解析结果集时引发错误。

有什么办法可以在 Tibco BW 中解决这个问题?

提前致谢。

4

2 回答 2

0

您可以使用“任何元素”尝试 ParsigXML:

看到输入是 UnresolvedSet

这是我正在解析的输出:

在此处输入图像描述

希望对你有效。

于 2018-05-31T22:14:33.590 回答
0

对我来说,将过程输出 UnresolvedResultsets 转换为列/值模式听起来可以帮助解决您的问题。您可以使用标准的“转换 XML”活动将 $JDBC-Procedure/resultSet/UnresolvedResultsets 转换为列/值模式

Step1创建具有以下内容的 XSLT 文件:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:str="http://exslt.org/strings" 
xmlns:tns="http://www.*****.com/DMS/Core/Schemas/Index/Schema.xsd" 
version="2.0">
   <xsl:output method="xml" encoding="UTF-8" indent="yes" />
   <xsl:template match="/">
    <xsl:element name="ROOTELEMENT">
     <xsl:for-each select="//node()[not(exists(child::*))]">
        <xsl:if test="name()">
           <xsl:element name="Column">
              <xsl:element name="Name">
                 <xsl:value-of select="name()" />
              </xsl:element>
              <xsl:element name="Value">
                 <xsl:value-of select="." />
              </xsl:element>
           </xsl:element>
           </xsl:if>
         </xsl:for-each>
      </xsl:element>
   </xsl:template>
</xsl:stylesheet>

第 2 步添加“转换 XML”活动并将在第 1 步中创建的 xslt 文件指定为样式表 第2步

Step3映射 $JDBC-Procedure/resultSet/UnresolvedResultsets 到 Transform XML 输入 第三步

结果应该是这样的:在此处输入图像描述

这是转换 XML 教程的链接

于 2018-03-09T20:02:16.943 回答