CURRENT PATH 专用寄存器

CURRENT PATH (或 CURRENT_PATH) 专用寄存器指定 VARCHAR (2048) 值,用于标识在动态预编译 SQL 语句中解析未限定函数名,过程名,数据类型名,全局变量名和模块对象名时使用的 SQL 路径。 CURRENT FUNCTION PATH 是 CURRENT PATH 的同义词。

初始值是以下段落中指定的缺省值。 对于静态 SQL , FUNCPATH 绑定选项提供用于函数和数据类型解析的 SQL 路径。

CURRENT PATH 专用寄存器包含用双引号括起并以逗号分隔的一个或多个模式名的列表。 例如,指定数据库管理器首先在 FERMAT 模式中查找,然后在 XGRAPHIC 模式中查找,最后在 SYSIBM 模式中查找的 SQL 路径在 CURRENT PATH 专用寄存器中返回为:
"FERMAT","XGRAPHIC","SYSIBM"

缺省值为 SYSIBMSYSFUNSYSPROCSYSIBMADMSYSHADOOPX,其中 X 是 USER 专用寄存器的值,由双引号定界。 可通过调用 SET CURRENT PATH 语句来更改该值。 不需要指定模式 SYSIBM。 如果它未包含在 SQL 路径中,那么将隐式假定它是第一个模式。 如果采用隐式方式,那么 SYSIBM 不会占用任何 2048 字节。

未使用模式名限定的数据类型将使用 SQL 路径中包含具有相同非限定名的数据类型的第一个模式隐式限定。 以下语句的描述中概述了此规则的例外情况 :CREATE TYPE (单值) , CREATE FUNCTION , COMMENT 和 DROP。

示例: 使用 SYSCAT.ROUTINES 目录视图,查找可以在不限定例程名的情况下调用的所有用户定义例程,因为 CURRENT PATH 专用寄存器包含模式名。
   SELECT ROUTINENAME, ROUTINESCHEMA FROM SYSCAT.ROUTINES
     WHERE POSITION (ROUTINESCHEMA, CURRENT PATH, CODEUNITS16) <> 0