从数据库表映射目标元素

要从数据库表映射目标元素,将 Mapping 节点设置为:
  • 从数据库检索相关的行
  • 用数据库中的值填充消息目标元素
将数据库添加到源中所述,有多种方式可将数据库添加为源以进行映射。将数据库添加到映射后,“电子表格”窗格的“映射脚本”列中将包含 $db:select 条目。在缺省情况下,它的值是 fn:true(),表明将从数据库表检索所有行。在数据库 SQL 中,您将通过在数据库调用中添加 WHERE 子句来限制行数。 在 Mapping 节点 中,限制选定行数目的对等方法是使用 $db:select 表达式。

以下步骤显示了在 Mapping 节点 中限制选定行数目的对等方法:

  1. 在“电子表格”窗格中,单击 $db:select 行。 这会将 fn:true() 放置到“编辑”窗格中。
  2. 在“编辑”窗格中编辑表达式,为数据库调用指定正确的条件。要帮助您这样做,您可以:
    1. 选择与检索到的行相关的所有数据库列,并将它们从“源”窗格拖动到“编辑”窗格。 这些是用于 SQL WHERE 子句的数据库列名称。
    2. 选择带有值的与检索到的行相关的所有源消息元素,并将它们从“源”窗格拖动到“编辑”窗格。 这些是选定的数据库列可以与之相匹配的值。
    3. 单击编辑 > 内容辅助打开“内容辅助”。
    4. 从“内容辅助”选择函数,将它们应用到数据库调用中的消息元素。
以下是 $db:select 条目的一个示例,其中数据库列与输入消息中的常量或字段相匹配:
$db:select_1.BROKER50.JDOE.RESOLVEASSESSOR.ASSESSORTYPE = 'WBI' or $db:select_1.BROKER50.JDOE.
RESOLVEASSESSOR.ASSESSORTYPE = $source/tns:msg_tagIA81CONF/AssessorType

$db:select 条目检索所有合格的行,因此可能会检索到多个行。缺省情况下,该选择被处理为重复,由“电子表格”窗格中 $db:select 下面的“for”行来表示。

配置 $db:select 后,通过将数据库列从“源”窗格拖动到“目标”窗格中的消息元素,可以从数据库填充目标消息。“源”窗格中数据库列和“目标”窗格中元素间的线表明了映射。此映射的条目也以 Xpath 格式显示在“电子表格”窗格中。三角图标会显示在已映射对象旁边的“源”窗格和“目标”窗格中。

更新开始使用数据库选择

缺省情况下,$db:select 条目伴有一个“for”行,该行在选择结果集处迭代。 确保您的“for”行处于映射的正确位置。映射的行为取决于“for”行在“电子表格”窗格中的位置。例如,如果 $db:select 语句的结果匹配数据库中的 5 行,且“for”行处于“电子表格”窗格中 $target 条目的上方,映射节点则输出 5 条完整的消息。如果“for”行处于消息体内,则会生成一条消息且消息体内有 5 个重复元素。

一个映射可包含与 $db:select 条目相关联的多个“for”行,这些行执行单次数据库选择,并在结果处多次迭代。例如,可将多个“for”行用于条件映射,其中个别“for”行与“condition”或“else”结合使用。

“for”行并不始终是必需的,可在以下情况下删除:
  • 如果数据库选择仅返回一行
  • 如果您对选择结果使用聚集 Xpath 功能

    例如 fn:sum 或 fn:count。

任何 $db:select 表达式都必须处于“电子表格”窗格中 $db:select 条目的范围内,这意味着它必须是 SELECT 语句的子句。如果 $db:select 表达式不在范围内,消息映射编辑器则将 $db:select 条目移到 $db:select 表达式不超出范围的位置。确保 $db:select 条目的位置对于消息映射是正确的。

数据库表连接

支持对同一数据库中的表进行数据库表连接。 例如,考虑以下两个表,其中 PRODUCT_ID 与 PART_NUMBER 具有匹配项:
Table    Column        Row 1    Row 2    Row 3      Row 4
ORDER    PRODUCT_ID    456      456      345        123
         QUANTITY      100      200      300        400

PRODUCT  PART_NUMBER   123      456      789        012
         PART_NAME     pen      pencil   paperclip  glue
         PRICE         0.25     0.15     0.02       0.99
具有以下语法的 $db:select 表达式将连接表:
$db:select.MY_DB.SCHEMA1.ORDER.PRODUCT_ID=$db:select.MY_DB.SCHEMA2.PRODUCRT.PART_NUMBER
示例中的 $db:select 表达式将生成以下结果集:
                Row 1    Row 2    Row 3
PRODUCT_ID      456      456      123
QUANTITY        100      200      400
PART_NUMBER     456      456      123
PART_NAME       pencil   pencil   pen
PRICE           0.15     0.15     0.25
然后您可使用“for”行迭代整个结果集,方式与单个表的结果相同。
更新结束
相关概念
消息映射编辑器
创建消息映射
相关参考
Mapping 节点
消息映射编辑器“源”窗格
消息映射编辑器“目标”窗格
消息映射编辑器的“编辑”窗格
消息映射编辑器的“电子表格”窗格
消息映射
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ar25267_