SQL 路径

SQL路径是模式名称的有序列表。 Db2 使用路径为出现在任何上下文中的某些非限定对象名称解析模式名称,这些对象名称不是作为ALTER、CREATE、DROP、COMMENT、GRANT、RENAME或REVOKE语句的主对象。

Db2 使用路径为以下对象名称解析模式名称:
  • 数据类型(包括内置类型和特殊类型)
  • 函数
  • 存储过程
  • 全局变量

从左到右搜索路径时, Db2 会用 SQL 路径中的第一个模式名称来隐式限定对象名称,该路径包含具有相同未限定名称的对象,且用户拥有适当的权限。 对于函数, Db2 使用一种称为函数解析的过程,并结合 SQL路径来确定选择哪个函数,因为SQL路径中的同一模式或其他模式中可能定义了多个具有相同名称和参数数量但参数数据类型不同的函数。 (详情请参阅功能解析。) 对于程序,只有当参数数量也相同时, Db2 才会选择匹配的程序名称。

SQL路径不适用于关联定位器和描述程序语句中的非限定过程名称。 对于这些语句,不会生成隐式模式名称。

假设 SQL路径为SMITH、XGRAPHIC、SYSIBM,并且指定了非限定唯一类型名称MYTYPE, Db2 如何使用SQL路径解析模式名称。 Db2 在模式SMITH、XGRAPHIC和SYSIBM中首先查找MYTYPE。

PATH选项用于建立 SQL路径 ,用于解析:

  • 静态SQL语句中的不合格数据类型、全局变量和函数名称
  • SQL CALL语句中不合法的程序名称,将程序名称指定为标识符(CALL procedure-name

如果在创建计划或包时,或在最后一次重新编译时,或在定义或最后一次更改本机 SQL 过程时,未指定 PATH 选项,则 SQL 路径的默认值为:SYSIBM、SYSFUN、SYSPROC、 计划或包限定符

CURRENT PATH特殊寄存器确定用于解析的SQL路径

  • 动态SQL语句中的不合格数据类型、全局变量和函数名称
  • SQL CALL语句中指定主机变量中的过程名称 (CALL host-variable) 的不合格过程名称

通常情况下,当前路径特殊寄存器的初始值是以下之一:

  • PATH选项的价值
  • “SYSIBM”、“SYSFUN”、“SYSPROC”、“SYSIBMADM ”,如果未指定路径选项, 则为当前 SQLID 特殊寄存器的值

如果在 SQL 路径中未明确指定模式 “SYSIBM”、“SYSFUN”、“SYSPROC”、“SYSIBMADM ”,则默认将模式置于路径的前端;如果未指定所有模式,则默认按 “SYSIBM”、“SYSFUN”、“SYSPROC”、“SYSIBMADM ”的顺序进行指定。

例如,假设 SQL路径被明确指定为SYSIBM、GEORGIA、SMITH。 作为隐式假设的方案,SYSFUN、SYSPROC和SYSIBMADM被添加到显式路径的开头,从而有效地形成以下路径:
  • SYSFUN、SYSPROC、SYSIBMADM、SYSIBM、GEORGIA、SMITH

有关动态 SQL 的 SQL 路径的更多信息,请参阅 CURRENT PATH 特殊寄存器SET PATH 语句