給定一個組態選項名稱,從 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;