PATH 子句

PATH 子句指定一个其他模式的列表,当将函数和过程与其实现匹配时会搜索该列表。调用依赖的模式隐式包含在 PATH 中。

PATH 功能用于根据以下算法解析工具中的未限定函数和过程名称。

必须有单个函数或过程与未限定名称匹配,否则工具将报告错误。您可通过使用 schemaId 限定函数或过程名称来更正错误:
  1. 将搜索当前 MODULE(如果有)以查找匹配的函数或过程。MODULE 作用域的函数和过程只能在它们的包含 MODULE 中可见。MODULE 作用域的函数和过程将隐藏模式作用域的函数和过程。
  2. 将搜索 <node schema>(但不包括它包含的 MODULE)和 <SQL-broker schema> 或 PATH 语句标识的模式以搜索匹配的函数过程
注: schemaId 必须是全限定模式名。

<node schema> 是包含节点的消息流的模式。该模式的名称由代理 XML 消息中的消息处理节点 uuid 的最后一段给定。

当调用例程时,所使用的名称可以由模式名称限定。该行为取决于的环境如下所示:
  • 如已指定模式,则调用指定的模式例程。标量内置函数(不包括 CAST、EXTRACT 和特殊的寄存器)被视为在一个称为 SQL 的隐式声明模式内被定义。可以使用这种方法调用它们,例如, SQL.SUBSTRING(...)。

    接下来发生什么取决于调用者是在模块例程中还是在模式例程中。

    对于模块例程:
    • 如果未指定模式,调用语句在模块例程中,并且在本地模块中存在给定名称的例程,则调用该本地例程。
    • 如果未指定模式,调用语句在模块例程中,并且在本地模块中不存在给定名称的例程,则在模式路径中的所有模式中搜索相同名称的例程。
      如果匹配的函数存在于一个模式中,则使用它。如果匹配的函数存在于多个模式中,发生编译时错误。如果没有匹配的函数,则搜索模式 SQL。
      注: 本规则和前述的规则意味着相同名称的本地模块例程比内置例程的优先级高。
    对于模式例程:
    • 如果未指定模式,调用者是模块例程,并且在本地模式中存在给定名称的例程,则调用该本地例程。
    • 如果未指定模式,调用语句在模块例程中,并且在本地模式中不存在给定名称的例程,则在模式路径中的所有模式中搜索相同名称的例程。
      如果匹配的函数存在于一个模式中,则使用它。如果匹配的函数存在于多个模式中,发生编译时错误。如果没有匹配的函数,则搜索模式 SQL。
      注: 本规则和前述的规则意味着相同名称的本地模块例程比内置例程的优先级高。

<node schema> 定义为包含节点的消息流的模式。该模式的名称由代理 XML 消息中的消息处理节点 uuid 的最后一段给定。

以这种方式指定 <node schema> 以提供与先前的 WebSphere Message Broker 版本的向前兼容性

当 <node schema> 是唯一引用的模式时,代理 XML 消息不包含 WebSphere Message Broker V5.0 中所含的额外功能。

先前 WebSphere Message Broker 版本中的代理不支持多模式,例如,用于再使用的子例程库。要部署到产品的先前版本中的代理,将所有 ESQL 子例程置于与调用它们的消息流和节点相同的模式中。

Eclipse 工具在内容帮助和源代码验证中使用 WebSphere Message Broker V5.0 ESQL 句法。当生成代理 ESQL 代码时,Eclipse 工具可以为向后兼容性生成 V2.1 样式的代码。

在模式级别上,消息流的代理模式必须包含在其 ESQL 文件中下列内容任一:
  • 模式级别函数
  • 模式级别过程
  • 模式级别常量
  • 模块级别常量
  • 模块级别变量

如不存在任何的上述项目,则 Eclipse 工具生成不带有 MODULE 和 FUNCTION 主包装程序的代理 ESQL。代理 V2.1 和 V5.0 都接受该样式。但是,如果使用 V2.1 代理,则不能在代码中使用任何 V5.0 语法,例如,名称空间。

函数和过程名称在它们的 SCHEMA 或 MODULE 中必须是唯一的

示例

以下示例向 CommonUtils 模式中添加一个路径:
BROKER SCHEMA CommonUtils
PATH SpecialUtils;

MODULE ....
下一个示例向缺省模式添加一个路径:
PATH CommonUtils, SpecialUtils;

MODULE ....
相关概念
ESQL 概述
相关任务
正在开发 ESQL
相关参考
语法图:可用类型
ESQL 语句
BROKER SCHEMA 语句
CREATE MODULE 语句
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ak05105_