FREE QUERY 子命令(数据链路层)
FREE QUERY 子命令用于从一个或多个查询中删除特定目录表中的行。 如果动态语句缓存中有任何指定的查询,FREE QUERY 会将其从动态语句缓存中清除。
环境 FREE QUERY
您可以使用 DB2I 的免费查询,或者使用前台或后台运行的TSO下的DSN会话。 您也可以使用存储过程 SYSPROC.ADMIN_COMMAND_DSN 从远程请求者提交此子命令。
数据共享范围 :集团
授权 FREE QUERY
要执行此命令,您必须使用包含以下权限之一的进程特权集:
- SQLADM 权限
- 系统 DBADM 权限
- 系统管理员权限
- SYSCTRL 权限
- SYSADM 权限
语法 FREE QUERY
过滤器块:
包裹块:
选项说明 FREE QUERY
- FILTER( ‘ 过滤器名称 ’ )
- 指定要从访问路径存储库中删除的查询。 filter-name 是 SYSIBM.SYSQUERY 目录表USERFILTER列中的一个值。 在FREE QUERY处理过程中, SYSIBM.SYSQUERY 表中所有具有USERFILTER值 filter-name的行都会被删除。 从 SYSIBM.SYSQUERY 表中删除的记录将级联到 SYSIBM.SYSQUERYPLAN 表或 SYSIBM.SYSQUERYOPTS 表中。
- PACKAGE( 包名称 )
- 要从中释放查询的包的名称。
- QUERYID( 数字 )
- 在 SYSIBM.SYSQUERY 表中释放一个具有相同QUERYID值的条目,以及在 SYSIBM.SYSQUERYPLAN 表或 SYSIBM.SYSQUERYOPTS 表中释放相应的条目。
- QUERYID(ALL)
- 从 SYSIBM.SYSQUERY 表中删除所有条目,并从 SYSIBM.SYSQUERYPLAN 表或 SYSIBM.SYSQUERYOPTS 表中删除相应的条目。
- 地点名称
- 指定数据服务器的位置,以便释放查询。 只能指定本地 Db2 子系统的位置名称。 如果指定了位置名称,则必须在 SYSIBM.LOCATIONS 表中定义本地 Db2 子系统的名称。 如果此表不存在或数据服务器未找到,则会显示一条错误消息。
默认值为本地 Db2 子系统。
- collection-id 或 (*)
- 标识与要释放的查询相关的集合。 没有缺省值。
您可以使用星号( * )来释放所有授权集合中 指定package-id 的所有包。
- package-id 或(*)
- 标识与要释放的查询相关的包。 没有缺省值。
您可以使用星号( * )来释放您有权释放的 collection-id 中的所有软件包。
- 版本号或(*)
- 标识要释放关联查询的包版本。
您可以使用星号 ( * ) 释放您有权释放的 collection-id 和 package-id 中的所有本地包。 您不能使用*来释放远程包。
如果您为 版本号 指定了(),则空字符串将用于版本ID。
如果省略 version-id ,则默认值取决于 package-id 的指定方式。 如果您在 包裹ID 中使用*,则 版本号 默认为*。 如果您为 package-id 提供了明确的值 ,version-id 默认为空字符串。
- ( * )
- 释放所有您有权释放的本地 Db2 包。
指定 (*) 相当于指定包名称为 (*.*.(*)) 或 (*.*)。
使用说明 FREE QUERY
- 释放多个查询
- 如果您使用FREE QUERY释放多个查询,则每个成功的释放操作都会在下一个查询被释放之前进行。 如果查询出错,FREE QUERY将终止对该数据包的查询,并继续处理下一个查询。
- 数据共享成员的信息追踪
- 当在 Db2 数据共享成员中发出具有组范围的命令时,该命令也会在所有其他活动成员中运行。 IFICID 090 跟踪记录显示,除了发出原始命令的成员的跟踪记录外, 016.TLPKN5F 相关 ID 的 SYSOPR 授权 ID 也发出了相同的命令。 请参阅 Db2 数据共享中的命令范围。
例子 FREE QUERY
示例1 :为所有查询释放所有访问路径:
FREE QUERY QUERYID(ALL)示例2: SYSIBM.SYSQUERY 目录表的USERFILTER列包含SALESAPP的免费查询:
FREE QUERY
FILTER('SALESAPP')示例3: 释放SALESPACK包中的所有查询:
FREE QUERY
PACKAGE(SALESCOLL.SALESPACK)