使用 Database 节点与指定的 ODBC 数据源中的数据库进行交互。通过对指定来自输入消息的数据的 ESQL 语句进行编码来定义交互作用的性质,并可能以某些方式(例如,执行计算)对其进行转换并将结果指派到数据库表。
您可以通过设置属性来控制,是立即落实对数据库的更新,或是待消息流处理完成时落实更新,或根据消息流的整个完成状态进行回滚操作。
尽管您可以使用此节点更新数据库,但无法对消息进行任何更新。
Database 节点在工作台中由以下图标表示:
当您将 Database 节点的实例放入消息流后,便可对它进行配置。右键单击编辑器视图中的节点,然后单击属性。 将显示该节点的基本属性。
对于必须为其输入值的所有必需属性(没有定义缺省值的属性),在属性对话框上都会用星号作标记。
如下所示配置 Database 节点:
在 z/OS 系统上,代理使用 mqsisetdbparms 命令中指定的代理启动任务标识或用户标识和密码、JCL 和定制数据集 <hlq>.SBIPPROC 中的 BIPSDBP。
当您编码与表交互的 ESQL 语句时,那些表假设已经在此数据库内 存在。如果它们不存在,则代理在运行时生成数据库错误。
对 ESQL 语句进行编码来定制 ESQL 文件中的 Database 节点的行为,该文件与您将该 Database 节点实例包含在其中的消息流关联。ESQL 文件(缺省情况下名称为 <message_flow_name>.esql)在需要节点的消息流中包含每个节点的 ESQL。 每个与特定节点相关的代码部分都称为模块。
如果此消息流尚不存在 ESQL 文件,则右键单击 Database 节点并单击打开 ESQL。这在 ESQL 编辑器视图中创建并打开了新的 ESQL 文件。
如果 ESQL 文件已存在,则单击语句属性旁的浏览按钮。 这显示“模块选择”对话框,它列出可以由此消息流访问的 ESQL 文件中定义的可用 Database 节点模块(可以在其他独立的项目中定义 ESQL 文件)。选择相应的模块并单击确定。如果没有可用的合适模块,则列表为空。
如果您指定的模块不存在,则将为您创建该模块并由编辑器定位文件来显示它。如果文件和模块已经存在,则编辑器定位文件并显示和突出显示正确模块。
如果您愿意,可以在资源导航器中打开相应的 EAQL 文件并在大纲视图中选择此节点。
如果在新的或现有的 ESQL 文件中为此节点创建了模块骨架,则它由以下 ESQL 组成。此示例中显示缺省模块名称:
CREATE DATABASE MODULE <flow_name>_Database CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN RETURN TRUE; END; END MODULE;
如果创建了自己的 ESQL 模块,则正确创建该框架。您可更新缺省名称,但需确保所指定的名称与相应的节点属性语句的名称相匹配。
添加自己的 ESQL 在 BEGIN 语句后,RETURN TRUE 前定制此节点。
您还可以通过单击
创建 ESQL 文件。您可以在该模块中使用所有的 ESQL 语句,包括 SET、WHILE、DECLARE 和 IF,但不同于 Compute 节点,Database 节点将它在输入终端收到的消息未经更改地传播到输出终端。 这表示与 Filter 节点类似,您仅有一个要在 Database 节点中引用的消息。
由于您不可以修改任何消息的任何部分,因此赋值语句(SET 语句,而非 INSERT 语句的 SET 子句)只能将值赋予临时变量。因此,可使用赋值语句的操作范围是有限的。
如果您愿意,可以在资源导航器中打开相应的 EAQL 文件并在大纲视图中选择此节点。
当您选择此框时,节点将所有数据库的正返回码按错误处理并将以同样的方法生成异常,如同对负或更严重的错误那样的方式。
如果您没有选择框,则节点将警告作为正常返回码处理,并且不生成任何异常。生成的最明显的警告是未找到,在大多数情况下可以安全地作为正常返回码处理。
如果您清除该框,则包含 ESQL 来检查任何可能在对每个数据库做出调用后(您可以使用 SQLCODE 和 SQLSTATE 来完成)返回的数据库错误。如果发生错误,您必须处理消息流中的错误来确保代理和数据库的完整性:如果您没有通过自己的处理来解决则会忽略错误,因为您已经选择不调用由代理处理的缺省错误。例如,您可以包含 ESQL THROW 语句在此节点中抛出异常,或可以使用 Throw 节点在后面的点生成自己的异常。
单击取消以关闭对话框,并废弃对属性所作的所有更改。
下表描述 Database 节点的终端。
终端 | 描述 |
---|---|
In | 接受供节点处理的消息的输入终端。 |
Failure | 如果在计算期间检测到故障,则这就是输入消息传播到的输出终端。如果您已选择将警告作为错误处理,即使处理成功完成,节点也会将消息传播到此终端。 |
Out | 当节点中的处理完成时已转换的消息路由到的输出终端。已转换的消息也可能由 PROPAGATE 语句路由到该终端。 |
Out1 | 已转换的消息可能由 PROPAGATE 语句路由到的第一个选用输出终端。 |
Out2 | 已转换的消息可能由 PROPAGATE 语句路由到的第二个选用输出终端。 |
Out3 | 已转换的消息可能由 PROPAGATE 语句路由到的第三个选用输出终端。 |
Out4 | 已转换的消息可能由 PROPAGATE 语句路由到的第四个选用输出终端。 |
下表描述该节点的属性;标题为 M 的列表示属性是否是必需的(如果在未定义缺省值时必须输入值,则在属性对话框上以星号作标记),标题为 C 的列表示属性是否是可配置的(将消息流添加到 BAR 文件以部署此文件时可以更改该值)。
下表描述 Database 节点的“基本”属性。
属性 | M | C | 缺省值 | 描述 |
---|---|---|---|---|
数据源 | 否 | 是 | 数据库的 ODBC 数据源名,在该数据库中驻留着您在与该节点关联的 ESQL 中引用的表(由语句属性标识)。 | |
语句 | 是 | 否 | 数据库 | ESQL 文件中的模块名称,该文件包含针对数据库执行的语句。 |
事务 | 是 | 否 | 自动 | 节点的事务方式。这可以是自动或落实。 |
将警告作为错误处理 | 是 | 否 | 已清除 | 将数据库 SQL 警告作为错误处理。如果您选中该复选框,则执行此操作。 |
在数据库出错时抛出异常 | 是 | 否 | 选中 | 数据库错误导致代理抛出异常。如果您选中该复选框,则执行此操作。 |
下表描述 Database 节点的“描述”属性。
属性 | M | C | 缺省值 | 描述 |
---|---|---|---|---|
简短描述 | 否 | 否 | 节点的简要描述。 | |
详细描述 | 否 | 否 | 描述消息流中节点用途的文本。 |