否则在 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>
我已将以下逻辑放入 Table 中的 FOR-EACH 中的 RTF 模板中:
<?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?>
实际输出与预期输出匹配:
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?>
即使您正在执行 for-each
循环,//
也会导航到根目录,然后 select 所有 BATCH_SOURCE_NAME 元素。
//BATCH_SOURCE_NAME='FreightMaster'
对于您的数据始终为真,因为 BATCH_SOURCE_NAME='FreightMaster'
处存在一行,因此打印 <?CT_REFERENCE?>
,第一行为空。
在第二种情况下,出于同样的原因,BATCH_SOURCE_NAME='MIGRATION'
始终为真,所以现在你为每一行打印 INVOICE_NUMBER
。结果是正确的,因为 INVOICE_NUMBER
与第 2 行和第 3 行的 CT_REFERENCE
相同。
我的数据集中有以下 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>
我已将以下逻辑放入 Table 中的 FOR-EACH 中的 RTF 模板中:
<?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?>
实际输出与预期输出匹配:
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?>
即使您正在执行 for-each
循环,//
也会导航到根目录,然后 select 所有 BATCH_SOURCE_NAME 元素。
//BATCH_SOURCE_NAME='FreightMaster'
对于您的数据始终为真,因为 BATCH_SOURCE_NAME='FreightMaster'
处存在一行,因此打印 <?CT_REFERENCE?>
,第一行为空。
在第二种情况下,出于同样的原因,BATCH_SOURCE_NAME='MIGRATION'
始终为真,所以现在你为每一行打印 INVOICE_NUMBER
。结果是正确的,因为 INVOICE_NUMBER
与第 2 行和第 3 行的 CT_REFERENCE
相同。