0

我对 B1IF 很陌生,我有一个奇怪的问题,我相信你们可以帮助我解决这个问题:

我正在处理一个场景步骤,我需要执行 SQL 调用,然后将该结果放入一个变量中以在另一个 SQL 调用中使用它。当我进行 XSL 转换时,它正在工作并打印正确的值:

<vDocFROMSAPCardCode>
<xsl:value-of select="/vpf:Msg/vpf:Body/vpf:Payload[./@id='atom9']/jdbc:ResultSet/jdbc:Row/jdbc:CardCode"></xsl:value-of>
</vDocFROMSAPCardCode2>

这将打印该值,但是如果我尝试将其分配给名为 vFROMSAPCardCode 的局部变量:

/vpf:Msg/vpf:Body/vpf:Payload[./@id='atom20']/vDocFROMSAPCardCode2

总是空的。我需要在另一个查询中使用该查询的结果,但总是空白,尽管逻辑接缝没问题。

SELECT T0."DocNum", T0."DocEntry", T0."CardCode", T0."NumAtCard"  FROM ORDR T0 WHERE T0."CardCode" =  '$vFROMSAPCardCode' 

有谁知道我在这里想念什么?或者如何将先前查询的结果用于另一个查询?

顺便提一句。

atom9 是它工作正常的原始查询

atom20 是查询执行后的 XSL 转换。

4

2 回答 2

1

您可以将值分配给 xslt 中的变量,声明变量并在“选择”属性中分配值:

<xsl:variable name="vFROMSAPCardCode" select="/vpf:Msg/vpf:Body/vpf:Payload[./@id=&apos;atom9&apos;]/jdbc:ResultSet/jdbc:Row/jdbc:CardCode"></xsl:variable>

您也可以通过放置“xsl:value-of”而不是变量直接在另一个 qry 中使用该值(可以在 xslt atom 中完成,然后您可以将 xPath 放入 sql 调用中,如AquaVitale回答)

SELECT T0."DocNum", T0."DocEntry", T0."CardCode", T0."NumAtCard"  FROM ORDR T0 WHERE T0."CardCode" =
<xsl:value-of select="/vpf:Msg/vpf:Body/vpf:Payload[./@id=&apos;atom9&apos;]/jdbc:ResultSet/jdbc:Row/jdbc:CardCode"></xsl:value-of>

(如果您需要将值作为字符串使用&apos;而不是 ' )

于 2021-04-14T07:57:03.210 回答
0

您可以在 XSL 转换 Atom 中编写 SQL 查询,然后在 SQL Atom 中引用它。

XSL 转换 Atom:

<query>
SELECT T0."DocNum", T0."DocEntry", T0."CardCode", T0."NumAtCard"  FROM ORDR T0 WHERE T0."CardCode" =  '$vFROMSAPCardCode' 
</query>

然后在您的有效负载字段中的 SQL 调用中引用查询标记:

//vpf:Payload[./@id='atomX']//query
于 2017-11-27T15:55:38.540 回答