Spec-Zone.ru › MySQL 8.4

30.4.5.19 Функция sys_get_config()

При заданном имени параметра конфигурации возвращает значение параметра из таблицы 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.

Возвращаемое значение

Значение типа 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-8.4-en/sys-sys-get-config.html

Spec-Zone.ru

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