構成オプション名を指定すると、sys_config
テーブルからオプション値を返します。オプションがテーブルに存在しない場合は、指定されたデフォルト値 (NULL
の可能性があります) を返します。
sys_get_config()
がデフォルト値を返し、その値が NULL
である場合、呼出し側は指定された構成オプションの NULL
を処理できると予想されます。
慣例上、sys_get_config()
をコールするルーチンはまず、対応するユーザー定義変数が存在し、NULL
以外であるかどうかをチェックします。 その場合、ルーチンは sys_config
テーブルを読み取らずに変数値を使用します。 変数が存在しないか、NULL
である場合、ルーチンはテーブルからオプション値を読み取り、ユーザー定義変数をその値に設定します。 構成オプションとそれに対応するユーザー定義変数の関係の詳細は、セクション28.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 |
+-------+
ワンライナーの例: オプションがすでに設定されているかどうかを確認します。設定されていない場合は、(sys_config
テーブルの値を使用して)IFNULL(...)
結果を割り当てます:
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;