26.4.5.19 sys_get_config()函数

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

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

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

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

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

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

Return Value

VARCHAR(128)值。

Example

sys_configtable 中获取配置值,如果该 table 中不存在该选项,则默认设置回落为 128:

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

单线示例:检查该选项是否已设置;如果不是,则分配IFNULL(...)结果(使用sys_configtable 中的值):

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

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

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