このページは機械翻訳したものです。
構成オプション名を指定すると、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 に戻します:
Press CTRL+C to copymysql> SELECT sys.sys_get_config('statement_truncate_len', 128) AS Value; +-------+ | Value | +-------+ | 64 | +-------+
ワンライナーの例: オプションがすでに設定されているかどうかを確認します。設定されていない場合は、(sys_config
テーブルの値を使用して)IFNULL(...)
結果を割り当てます:
Press CTRL+C to copymysql> SET @sys.statement_truncate_len = IFNULL(@sys.statement_truncate_len, sys.sys_get_config('statement_truncate_len', 64));
IF (...) THEN ... END IF;
ブロックの例: オプションがすでに設定されているかどうかを確認します。設定されていない場合は、sys_config
テーブルから値を割り当てます:
Press CTRL+C to copyIF (@sys.statement_truncate_len IS NULL) THEN SET @sys.statement_truncate_len = sys.sys_get_config('statement_truncate_len', 64); END IF;