MySQL 8.0 リファレンスマニュアル


28.4.5.19 sys_get_config() 関数

構成オプション名を指定すると、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 テーブルに見つからない場合に返すデフォルト値。

戻り値

VARCHAR(128) 値。

オプションがテーブルに存在しない場合、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;

関連キーワード:  sys, プロシージャ, 関数, summary, latency, user, schema, setup, host, file