CURRENT PATH 专用寄存器
CURRENT PATH指定用于解析动态准备SQL语句中不合格数据类型名称和函数名称的SQL路径。 它还用于解决在SQL CALL语句 (CALL host-variable )中指定为主变量的不合格程序名称。
数据类型为VARCHAR(2048)。
CURRENT PATH特殊寄存器包含一个或多个模式名称列表,每个模式名称用分隔符括起来,并用逗号与下一个模式隔开(字符串中的任何分隔符都会重复,就像在任何分隔标识符中一样)。 分隔符和逗号包含在2048个字符长度内。
有关在动态和静态 SQL 语句中使用 SQL 路径解析非限定名称及其值的影响的信息,请参阅 SQL 路径。
当前路径特殊寄存器的初始值由以下条件中满足的第一个条件决定:
如果在调用环境的范围内为 CURRENT PATH 特殊寄存器分配了一个值(通过 SET PATH 语句),则特殊寄存器将继承调用环境的值。
如果连接是可信的,并且对象所有者和限定符选项都有效,则特殊寄存器设置为:“SYSIBM”、“SYSFUN”、“SYSPROC”、“SYSIBMADM ”、“角色名称 ”,其中角色名称是与可信上下文中的用户关联的角色。
否则,特殊寄存器设置为 :“SYSIBM”、“SYSFUN”、“SYSPROC”、“SYSIBMADM ”、“当前sqlid值 ”。
SQL程序或触发器中CURRENT PATH特殊寄存器的初始值取决于以下条件中满足的第一个条件:

- 在SQL例程中,如果特殊寄存器在调用环境范围内被赋值(通过SET PATH语句),则特殊寄存器将从调用环境中继承该值。
- 在触发器中,如果特殊寄存器在调用环境的作用域中分配了值(通过SET PATH语句),则特殊寄存器将继承调用环境中的值。
- 在SQL例程或触发器中,如果指定了SQL PATH例程或触发器选项,则特殊寄存器将设置为为其指定的值。
- 在SQL例程或触发器中,如果指定了SQL PATH例程或触发器选项,则特殊寄存器将设置为为其指定的值。
- 如果连接是可信的,并且对象所有者和限定符选项都有效,则特殊寄存器设置为:“SYSIBM”、“SYSFUN”、“SYSPROC”、“SYSIBMADM ”、“角色名称 ”,其中角色名称是与可信上下文中的用户关联的角色。
- 否则,特殊寄存器设置为 :“SYSIBM”、“SYSFUN”、“SYSPROC”、“SYSIBMADM ”、“当前sqlid值 ”。

如果在PATH特殊寄存器的初始值确定后,CURRENT SQLID特殊寄存器的值发生变化,则更新CURRENT SQLID时,PATH特殊寄存器的值不受影响。 但是,如果稍后发生提交操作且SET PATH语句尚未处理,则将重新初始化PATH特殊寄存器的值,同时考虑CURRENT SQLID特殊寄存器的当前值。
您可以通过执行语句SET PATH来更改寄存器的值。 为了便于在不同平台之间移植,建议在应用程序的开头使用 SET PATH 语句。
示例 :设置特殊寄存器,以便在系统模式之前搜索模式SMITH:
SET PATH = SMITH, SYSTEM PATH;