GETVARIABLE 标量函数 (scalar function)

GETVARIABLE函数返回由参数标识的会话变量的当前值,该值是一个长度可变的字符串。

阅读语法图跳过可视化语法图GETVARIABLE( 常量字符串,默认值,CAST(NULL AS VARCHAR(1)))

该模式是 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'