给定配置选项名称,返回来自 sys_config 表的选项值,或者如果选项不存在于表中,则返回提供的默认值(可能为 NULL)。
如果 sys_get_config() 返回默认值,并且该值为 NULL,则期望调用方能够处理给定配置选项的 NULL。
按照惯例,调用 sys_get_config() 的例程首先检查相应的用户定义变量是否存在且不为 NULL。如果是这样,该例程使用变量值,而不读取 sys_config 表。如果变量不存在或为 NULL,该例程从表中读取选项值,并将用户定义变量设置为该值。有关配置选项和相应用户定义变量之间关系的更多信息,请参见 第 30.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表中,则返回的默认值。
从 sys_config 表中获取配置值,否则将 128 作为默认值:
mysql> SELECT sys.sys_get_config('statement_truncate_len', 128) AS Value;
+-------+
| Value |
+-------+
| 64 |
+-------+
一行示例:检查选项是否已经设置;如果没有,则将 IFNULL(...) 结果(使用表中的值)分配给变量:
mysql> SET @sys.statement_truncate_len =
IFNULL(@sys.statement_truncate_len,
sys.sys_get_config('statement_truncate_len', 64));
IF (...) THEN ... END IF; 块示例:检查选项是否已经设置;如果没有,则将表中的值分配给变量:
IF (@sys.statement_truncate_len IS NULL) THEN
SET @sys.statement_truncate_len = sys.sys_get_config('statement_truncate_len', 64);
END IF;