数据库 节点

使用 数据库 节点与指定 ODBC 数据源中的数据库进行交互。

本主题包含以下几部分:

用途

通过编写指定来自输入消息的数据的 ESQL 语句可以定义交互的性质,并可能以某些方式(例如,执行计算)对其进行转换并将结果指定给数据库表。

您可以设置属性来控制立即落实对数据库的更新,还是待消息流处理完成后落实更新,此时将根据消息流的整体完成状态落实或回滚更新。

数据库 节点包含在选用板的 数据库 抽屉中,并在 IBM App Connect Enterprise Toolkit 中通过以下图标表示:

Database 节点图标

在消息流中使用此节点

假设您收到了一份 20 台监视器的订单。 如果仓库中有足够的监视器,您可能想降低库存数据库中的库存级别。 您可以使用 数据库 节点来检查是否有足够的监视器可用,并减少数据库中数量字段的值。

终端和属性

数据库 节点的实例放入消息流后,可以对其进行配置; 请参阅 配置消息流节点。 节点的属性在“属性”视图中显示。 所有要求输入值的必填属性(未定义缺省值的属性)都标有星号。

下表描述了 数据库 节点的终端。 有关 PROPAGATE 语句 (包括其语法) 的更多信息,请参阅 PROPAGATE 语句

终端 描述
输入 接受节点处理的消息的输入终端。
失败 如果在计算期间检测到故障,则将输入消息传播到此输出终端。 如果您已选择将警告作为错误处理,即使成功地完成处理,此节点也会将消息传播到此终端。
输出 完成节点中的处理后,将已转换的消息路由到此输出终端。 也可用 PROPAGATE 语句将已转换的消息路由到此终端。
Out1 第一个备用输出终端,可使用 PROPAGATE 语句将已变换的消息路由到此终端。
Out2 第二个备用输出终端,可使用 PROPAGATE 语句将已变换的消息路由到此终端。
Out3 第三个备用输出终端,可使用 PROPAGATE 语句将已变换的消息路由到此终端。
Out4 第四个备用输出终端,可使用 PROPAGATE 语句将已变换的消息路由到此终端。

下表描述了此节点的属性。 标题为 M 的列指出属性是否为必需(如果未定义缺省值时您必须输入值,那么将以星号标记);标题为 C 的列指出属性是否可配置(将消息流添加到 BAR 文件以进行部署时可以更改此值)。

下表描述了 数据库 节点的 "描述" 属性。

属性 M C 缺省 描述
节点名 节点类型,Database 节点的名称。
简短描述   节点的简要描述。
详细描述   描述消息流中节点用途的文本。

下表描述了 数据库 节点的 "基本" 属性。

属性 M C 缺省 描述 mqsiapplybaroverride 命令属性
数据源   数据库的 ODBC 数据源名称,该数据库包含您在与此节点相关联的 ESQL 中引用的表(由声明属性标识)。

此名称标识相应的数据库,使其为运行此消息流的系统所知。 集成节点使用您在 mqsicredentials (或 mqsisetdbparms) 命令中指定的用户标识和密码信息连接到此数据库。

如果与此节点相关联的 ESQL 包含 PASSTHRU 语句或 SELECT 函数和数据库引用,那么必须指定数据源属性的值。

dataSource
语句 数据库 ESQL 文件中的模块名称,该文件包含针对数据库运行的语句。 如果想要模块名称包含一个或多个空格,用双引号将名称括起来。

缺省名称为 <message_flow_name>.esql 的 ESQL 文件包含需要此文件的消息流中每个节点的 ESQL。 每个与特定节点相关的代码部分都称为模块。 当您编码与表交互的 ESQL 语句时,那些表假设已经在此数据库内 存在。 如果它们不存在,那么在运行时,集成节点将生成数据库错误。

对 ESQL 语句进行编码,以定制与包含此 数据库 节点实例的消息流相关联的 ESQL 文件中 数据库 节点的行为。 如果此消息流不存在 ESQL 文件,请双击 数据库 节点,或者右键单击该节点,然后单击 打开 ESQL 以在 ESQL 编辑器视图中创建并打开新的 ESQL 文件。

如果存在 ESQL 文件,请单击 语句 属性旁边的 浏览 以显示 "模块选择" 对话框,其中列出了此消息流可访问的 ESQL 文件中定义的可用 数据库 节点模块 (可以在其他从属项目中定义 ESQL 文件)。 选择相应的模块并单击确定。 如果没有可用的合适模块,列表将为空白。

如果您指定的模块不存在,将为您创建此模块并在编辑器中显示。 如果此文件和模块存在,编辑器将突出显示正确的模块。 如果在新的或现有的 ESQL 文件中为此节点创建了模块框架,此模块框架将由以下 ESQL 组成。 此示例中显示缺省模块名称:

CREATE DATABASE MODULE <flow_name>_Database
       CREATE FUNCTION Main() RETURNS BOOLEAN
       BEGIN
               RETURN TRUE; 
       END;
END MODULE;

如果创建了自己的 ESQL 模块,请正确地创建该框架。 您可更新缺省名称,但需确保所指定的名称与相应的节点属性语句的名称相匹配。

要定制此节点,请在 BEGIN 语句之后,RETURN TRUE 之前添加自己的 ESQL。 您可以在此模块中使用所有 ESQL 语句,包括 SET , WHILE , DECLARE 和 IF ,但是 (与 Compute 节点不同) Database 节点将在其输入终端接收到的消息传播到其输出终端,而不会更改。 因此,与 过滤器 节点类似,在 数据库 节点中只有一条要引用的消息。

 
事务 自动 节点的事务方式。 值为:
  • 自动(缺省值)。 如果消息流成功,那么将落实该消息流 ( 数据库 节点是该消息流的一部分); 即,将执行 ESQL 模块中定义的操作,并且该消息将继续通过该消息流。 如果消息流失败,将回滚操作。 如果选择 自动,那么落实或回滚数据库上 数据库 节点的操作的能力取决于整个消息流的成功或失败。
  • 落实。 要在连接到此节点的数据库中落实在此消息流中执行的所有未落实操作,而不考虑整条消息流的成败,请选择落实。 即使消息流本身失败也会落实对数据库所作的更改。
 
将警告作为错误处理 未选中 要将数据库警告消息作为错误来处理,并且对于节点将输出消息传播到 Failure 终端,请选择将警告作为错误处理。 这个复选框的最初状态是未被选中。

若选中此复选框,节点将来自数据库的所有正返回码当作错误处理,并以对待负返回码或更严重错误的相同方式生成异常。 如果不选择此复选框,节点将警告作为正常返回码处理,并且不生成异常。 提出的最重大警告是not found,在大多数情况下可作为典型返回码安全处理。

 
发生数据库错误时抛出异常 选中 要让集成节点在检测到数据库错误时生成异常,请选中发生数据库错误时抛出异常。 这个复选框的最初状态是选中的。

如果取消选中此复选框,请包含 ESQL 来检查每次数据库调用后可能返回的数据库错误(可以使用 SQLCODE 和 SQLSTATE 来获取此信息)。 如果发生错误,那么必须在消息流中处理该错误以确保集成节点和数据库的完整性;如果您不通过自己的处理操作来处理该错误,那么将忽略该错误,这是因为您已经选择了不使用集成节点的缺省错误处理操作。 例如,可以包含 ESQL THROW 语句以在此节点中抛出异常,也可以使用 Throw 节点在稍后生成您自己的异常。

 
下表描述了节点的“监视”属性。
属性 M C 缺省 描述
事件 为节点定义的事件显示在此选项卡上。 缺省情况下,不会在消息流中的任何节点上定义任何监视事件。 使用 添加编辑删除 来创建,更改或删除节点的监视事件。

通过选中或取消选中启用复选框,可以启用或禁用此处显示的事件。