我需要从 Tibco BW JDBC 调色板连接到远程 MS SQL 服务器存储过程,以检索我们不知道结果集列名的结果集。
在我的本地环境中,我模拟了返回预期结果集但使用虚拟列名的过程。因此,在解析 unresolvedResultSet 时,如果结果集中的列名与输出中定义的列名不同,则会引发错误。
如果我使用“结果集作为模式”选项,那么如果列名不同,它也会在解析结果集时引发错误。
有什么办法可以在 Tibco BW 中解决这个问题?
提前致谢。
我需要从 Tibco BW JDBC 调色板连接到远程 MS SQL 服务器存储过程,以检索我们不知道结果集列名的结果集。
在我的本地环境中,我模拟了返回预期结果集但使用虚拟列名的过程。因此,在解析 unresolvedResultSet 时,如果结果集中的列名与输出中定义的列名不同,则会引发错误。
如果我使用“结果集作为模式”选项,那么如果列名不同,它也会在解析结果集时引发错误。
有什么办法可以在 Tibco BW 中解决这个问题?
提前致谢。
您可以使用“任何元素”尝试 ParsigXML:
这是我正在解析的输出:
希望对你有效。
对我来说,将过程输出 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 文件指定为样式表
Step3映射 $JDBC-Procedure/resultSet/UnresolvedResultsets 到 Transform XML 输入