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.