Documentation Home

26.4.5.19 sys_get_config() 函数

给定配置选项名称,返回表中的选项值,如果表中不存在该选项 ,则返回sys_config提供的默认值(可能是 )。NULL

如果sys_get_config()返回默认值并且该值为NULL,则预计调用者能够处理 NULL给定的配置选项。

按照惯例,调用的例程 sys_get_config()首先检查相应的用户定义变量是否存在并且是非NULL. 如果是这样,例程将使用变量值而不读取 sys_config表。如果变量不存在或为NULL,则例程从表中读取选项值并将用户定义的变量设置为该值。有关配置选项与其对应的用户定义变量之间关系的更多信息,请参阅 第 26.4.2.1 节,“sys_config 表”

如果你想检查配置选项是否已经设置,如果没有,使用 的返回值 sys_get_config(),你可以使用 IFNULL(...)(见后面的例子)。但是,这不应该在循环内完成(例如,对于结果集中的每一行),因为对于仅在第一次迭代中需要赋值的重复调用,使用 IFNULL(...)预计比使用IF (...) THEN ... END IF;块慢得多(请参阅稍后举例)。

参数
  • in_variable_name VARCHAR(128):要为其返回值的配置选项的名称。

  • in_default_value VARCHAR(128)sys_config:如果在表中 找不到配置选项,则返回默认值。

返回值

一个VARCHAR(128)值。

例子

从表中获取配置值, sys_config如果表中不存在该选项,则回退到默认值 128:

mysql> SELECT sys.sys_get_config('statement_truncate_len', 128) AS Value;
+-------+
| Value |
+-------+
| 64    |
+-------+

一行示例:检查选项是否已经设置;如果不是,分配IFNULL(...)结果(使用 sys_config表中的值):

mysql> SET @sys.statement_truncate_len =
       IFNULL(@sys.statement_truncate_len,
              sys.sys_get_config('statement_truncate_len', 64));

IF (...) THEN ... END IF;块示例:检查选项是否已经设置;如果不是,则从表中分配值sys_config

IF (@sys.statement_truncate_len IS NULL) THEN
  SET @sys.statement_truncate_len = sys.sys_get_config('statement_truncate_len', 64);
END IF;