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.