GETVARIABLE 标量函数 (scalar function)
GETVARIABLE函数返回由参数标识的会话变量的当前值,该值是一个长度可变的字符串。
该模式是 SYSIBM。
- 字符串常量
- 指定一个包含会话变量名称的字符串常量,该变量的值将被返回。 弦常数:
- 长度不得超过142字节。
- 必须包含变量的全称,不能有空格。 不得指定分隔符。
- 不得包含小写字母或普通标识符中无法指定的字符。
变量的模式限定符必须是:
- SYSIBM用于内置会话变量。 有关内置会话变量的列表,请参阅内置会话变量。
- SESSION用于用户自定义的会话变量。 用户定义的会话变量通过连接或登录退出例程建立。 更多信息,请参阅连接和登录例程中的会话变量。
- 默认值
- 指定一个字符串常量,其中包含在指定的变量不存在或 Db2 不支持时返回的值。 默认值必须是一个不超过255字节的字符串常量。
如果未指定默认值 ,且指定的用户定义会话变量不存在,或者内置会话变量不受 Db2 支持,则返回错误。
- CAST(NULL AS VARCHAR(1))
- 指定如果指定的变量不存在或 Db2 不支持,则返回空值。
结果的数据类型为VARCHAR(255)。 结果可以为空值。
结果的CCSID是Unicode混合数据的CCSID。
注意
GETVARIABLE函数无法获取内置全局变量或用户定义的全局变量的值。
示例
使用GETVARIABLE函数将主机变量 :hv1 的值设置为当前正在执行的计划名称。 包含计划名称的内置会话变量名为 SYSIBM.PLAN_NAME。
SET :hv1 = GETVARIABLE('SYSIBM.PLAN_NAME');如果 Db2 不支持会话变量的名称,则会返回错误。 例如,以下语句会返回错误,因为 Db2 不支持名为 SYSIBM.XYZ 的内置会话变量。SET :hv1 = GETVARIABLE('SYSIBM.XYZ');使用GETVARIABLE函数将主机变量 :hv2 的值设置为用户自定义会话变量TEST中定义的值。 如果会话变量尚未设置或无法找到,则让函数返回值“测试失败”。
SET :hv2 = GETVARIABLE('SESSION.TEST','TEST FAILED');使用GETVARIABLE函数将主机变量 :hv3 的值设置为SYSTEM EBCDIC CCSID的字符串表示形式。 包含系统EBCDIC CCSID的内置会话变量的名称为 SYSIBM.SYSTEM_EBCDIC_CCSID。
SET :hv3 = GETVARIABLE('SYSIBM.SYSTEM_EBCDIC_CCSID');无论安装面板上的混合数据设置(是或否)如何,该功能都会返回三个逗号分隔的值,分别对应于SBCS、MIXED和GRAPHIC CCSID编码方案。
例如,如果语句是在安装面板上“混合数据”字段设置为“否”且默认系统CCSID为37的系统上发出的,则将返回以下字符串:
'37,65534,65534'如果声明是在安装面板上“混合数据”字段设置为“是”且默认系统CCSID为930(系统的混合CCSID)的系统上发布的,则将返回以下字符串:
'290,930,300'
