繁体   English   中英

否则在 Oracle BI Publisher 不工作

[英]Otherwise in Oracle BI Publisher not Working

我的数据集中有以下 XML 结构:

<DATA_DS>
<G_1>
<INVOICE_NUMBER>20005</INVOICE_NUMBER>
<BATCH_SOURCE_NAME>MIGRATION</BATCH_SOURCE_NAME>
<CT_REFERENCE/>
</G_1>
<G_1>
<INVOICE_NUMBER>454162</INVOICE_NUMBER>
<BATCH_SOURCE_NAME>FM Source Number</BATCH_SOURCE_NAME>
<CT_REFERENCE>454162</CT_REFERENCE>
</G_1>
<G_1>
<INVOICE_NUMBER>455920</INVOICE_NUMBER>
<BATCH_SOURCE_NAME>FM Source Number</BATCH_SOURCE_NAME>
<CT_REFERENCE>455920</CT_REFERENCE>
</G_1>
</DATA_DS>

我已将以下逻辑放在我的 RTF 模板中的 FOR-EACH 中的表中:

<?choose:?>
<?when://BATCH_SOURCE_NAME='FreightMaster'?><?CT_REFERENCE?><?end when?>
<?when://BATCH_SOURCE_NAME='FreightMaster-deactivated'?><?CT_REFERENCE?><?end when?>
<?when://BATCH_SOURCE_NAME='FM Source Number'?><?CT_REFERENCE?><?end when?>
<?otherwise:?><?INVOICE_NUMBER?><?end otherwise?>
<?end choose?>

但是,我的数据没有正确显示。 它显示为:

Invoice Number
-----------------
<null>
454162
455920

它应该如下所示:

Invoice Number
-----------------
20005
454162
455920

当我尝试将MIGRATION定义为选项时,它可以工作:

<?choose:?>
<?when://BATCH_SOURCE_NAME='MIGRATION'?><?INVOICE_NUMBER?><?end when?>
<?when://BATCH_SOURCE_NAME='FreightMaster'?><?CT_REFERENCE?><?end when?>
<?when://BATCH_SOURCE_NAME='FreightMaster-deactivated'?><?CT_REFERENCE?><?end when?>
<?when://BATCH_SOURCE_NAME='FM Source Number'?><?CT_REFERENCE?><?end when?>
<?otherwise:?><?INVOICE_NUMBER?><?end otherwise?>
<?end choose?>  

实际的 output 与预期的 output 匹配:

Invoice Number
-----------------
20005
454162
455920

我知道我可以在WHEN子句中指定源名称,但是有 20 多个源名称,我想简化代码。

知道为什么它不起作用吗?

<?choose:?>
   <?when:BATCH_SOURCE_NAME='FreightMaster'?><?CT_REFERENCE?><?end when?>
   <?when:BATCH_SOURCE_NAME='FreightMaster-deactivated'?><?CT_REFERENCE?><?end when?>
   <?when:BATCH_SOURCE_NAME='FM Source Number'?><?CT_REFERENCE?><?end when?>
   <?otherwise:?><?INVOICE_NUMBER?><?end otherwise?>
<?end choose?>

检查XPath 参考

即使您正在执行for-each循环, //也会导航到根,然后只是 select 所有 BATCH_SOURCE_NAME 元素。

//BATCH_SOURCE_NAME='FreightMaster'始终适用于您的数据,因为存在BATCH_SOURCE_NAME='FreightMaster'的行,因此打印<?CT_REFERENCE?> ,即第一行的 null。

在第二种情况下BATCH_SOURCE_NAME='MIGRATION'出于相同的原因始终为 true,因此现在您为每一行打印INVOICE_NUMBER 结果是正确的,因为INVOICE_NUMBER与第 2 行和第 3 行的CT_REFERENCE相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM