给定一个配置选项名称,从 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(...)
结果(使用 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;