SET CURRENT PACKAGESET 语句
SET CURRENT PACKAGESET语句为特殊寄存器CURRENT PACKAGESET赋值。
调用 SET CURRENT PACKAGESET
此语句只能嵌入在应用程序中。 这是一个无法动态准备的可执行语句。
授权 SET CURRENT PACKAGESET
不需要执行任何操作。
语法 SET CURRENT PACKAGESET
描述 SET CURRENT PACKAGESET
CURRENT PACKAGESET 的值由 SESSION_USER 特殊寄存器、字符串常量或宿主变量的值代替。 string-constant 或 host-variable 指定的值必须是一个不超过 128字节的字符串。
当前套餐设置说明
计划要素选择 : 计划要素是指已绑定到计划中的DBRM,或是指在计划包列表中以隐式或显式方式标识的包。 计划元素包含用于执行特定SQL语句的控制结构。
由于计划可能包含许多元素,因此在执行需要控制结构的 SQL 语句时,第一步就是选择包含其控制结构的计划元素。 Db2 用于选择计划要素的信息包括当前套餐的价值。
SET CURRENT PACKAGE SET用于指定当前服务器上存在的包的集合ID。 设置当前套餐 设置当前套餐是可选的,在未理解以下选择计划要素的规则之前,请勿使用。
如果当前 PACKAGESET 特殊寄存器为空字符串,则 Db2 会按以下顺序搜索 DBRM 或软件包:
在本地位置 (如果当前服务器为空或明确指定了该位置),顺序为:
- 所有直接与计划相关的动态业务报告
- 所有已分配给申请流程的套餐
- 计划套餐列表中明确列出的所有未分配套餐以及完全包含的所有集合。 搜索顺序与软件包列表中软件包的命名顺序一致。
在偏远地区 ,顺序如下:
- 所有已分配给该地点申请流程的套餐
- 计划包列表中明确列出的所有未分配包以及完全包含的所有集合,其位置与CURRENT SERVER的值匹配。 搜索顺序与软件包列表中软件包的命名顺序一致。
如果设置了特殊寄存器CURRENT PACKAGESET ,则 Db2 将跳过对计划中程序的检查,并使用CURRENT PACKAGESET的值作为集合。 例如,如果当前数据包中包含 COL5 ,则 Db2 使用 COL5.PROG1.timestamp 进行搜索。 更多信息,请参阅覆盖 Db2 用于解析软件包列表的值。
DRDA分类: SET CURRENT PACKAGESET由请求者执行,因此在DRDA中归类为局部SET语句。
CURRENT PACKAGESET特殊寄存器,带有存储过程和用户定义函数 :存储过程或用户定义函数中CURRENT PACKAGESET特殊寄存器的初始值是定义存储过程或用户定义函数的COLLID参数的值。 如果定义常规时未指定 COLLID 参数的值,则特殊寄存器的值将从调用程序中继承。 存储过程或用户定义的函数可以使用SET CURRENT PACKAGESET语句来更改特殊寄存器的值。 这样,常规就可以选择 Db2 包的版本,用于处理未定义COLLID值的调用例程中的SQL语句。
当控制从存储过程返回到调用程序时,特殊寄存器CURRENT PACKAGESET将恢复为调用存储过程之前包含的值。
例子 SET CURRENT PACKAGESET
EXEC SQL SET CURRENT PACKAGESET = 'PERSONNEL'; EXEC SQL SET CURRENT PACKAGESET = '';