Spec-Zone.ru › MySQL 5.7

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;

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/sys-sys-get-config.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API