給定一個配置選項名稱,此函數會從 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;