GlideDBFunctionCaseBuilder - グローバル
GlideDBCaseStatementBuilder API を使用すると、一連の条件に基づいて SQL CASE ステートメントと値を返すことができます。
この API は、 GlideElement - グローバル API の定義の一部として、またはテーブルのクエリを実行するときに使用できます。CASE ステートメントをビルドするには、まず、コンストラクター GlideDBFunctionCaseBuilder() を使用して GlideDBFunctionCaseBuilder オブジェクトをインスタンス化します。次に、一連の when() 呼び出しと then() 呼び出しと、それに続くオプションの 1 つの otherwise() 呼び出しを使用して、1 つ以上のケースを定義します。最後に、 build() メソッドを呼び出してビルダーをファイナライズし、完成したデータベース関数の case ステートメントを生成します。このステートメントは、直接使用することも、他の Glide 関数定義の一部として使用することもできます。
必要なロール:admin、function_field_admin。
GlideDBFunctionCaseBuilder:GlideDBFunctionCaseBuilder()
GlideDBFunctionCaseBuilder オブジェクトをインスタンス化します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
この例では、GlideDBFunctionCaseBuilder オブジェクトをインスタンス化します。
var caseBuilder = new GlideDBFunctionCaseBuilder();
GlideDBFunctionCaseBuilder:build()
条件のリストを終了し、最終的な CASE ステートメントを作成します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 完成したケースステートメント。 |
次の例は、単純な case ステートメントを定義してビルドする方法を示しています。影響度フィールドの数値に応じて、4つの異なる文字列のいずれかが出力されます。
const caseStatement = new GlideDBFunctionCaseBuilder()
.whenCompare("impact", "'='", "'1'").then("'CRITICAL'")
.whenCompare("impact", "'='", "'2'").then("'URGENT'")
.whenCompare("impact", "'='", "'3'").then("'IMPORTANT'")
.otherwise("'NOT IMPORTANT'")
.build();
const gr_incident = new GlideRecord("incident");
gr_incident.addFunction(caseStatement);
gr_incident.setLimit(10);
gr_incident.query();
while(gr_incident.next()) {
gs.info("impact: {0} case: {1}",
[gr_incident.impact, gr_incident.getValue(caseStatement)]);
}
出力:
*** Script: impact: 2 case: URGENT
*** Script: impact: 2 case: URGENT
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 2 case: URGENT
*** Script: impact: 2 case: URGENT
*** Script: impact: 3 case: IMPORTANT
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 3 case: IMPORTANT
*** Script: impact: 3 case: IMPORTANT
GlideDBFunctionCaseBuilder:それ以外の場合(文字列 exp)
オプション。whenとthenの少なくとも1つの呼び出しのペアに続いて、otherwise()呼び出しを使用すると、when式のいずれも満たされない場合に出力する値を指定できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| exp | 文字列 | 出力する値。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
| タイプ | 説明 |
|---|---|
| GlideDBFunctionCaseBuilder | ステートメントのビルドを続行するための fluent ビルダーオブジェクト。 |
次の例は、単純な case ステートメントを定義してビルドする方法を示しています。
const caseStatement = new GlideDBCaseFunctionBuilder()
.whenEqual("impact", "'1'").then("'CRITICAL'")
.whenEqual("impact", "'2'").then("category")
.whenEqual("impact", "'3'").then("length(short_description)")
.otherwise("'NOT IMPORTANT'")
.build();
const gr_incident = new GlideRecord("incident");
gr_incident.addFunction(caseStatement);
gr_incident.setLimit(10);
gr_incident.query();
while(gr_incident.next()) {
gs.info("impact: {0} case: {1}",
[gr_incident.impact, gr_incident.getValue(caseStatement)]);
}
出力:
*** Script: impact: 2 case: inquiry
*** Script: impact: 2 case: Hardware
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 2 case: database
*** Script: impact: 2 case: inquiry
*** Script: impact: 3 case: 28
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 3 case: 17
*** Script: impact: 3 case: 29
GlideDBFunctionCaseBuilder - then(文字列 exp)
when() メソッドに続いて、then() を使用すると、when() 式が満たされた場合に出力する値を指定できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| exp | 文字列 | 出力する値。定数、フィールドへの参照、または別の Glide 関数にすることができます。 |
| タイプ | 説明 |
|---|---|
| GlideDBFunctionCaseBuilder | ステートメントのビルドを続行するための fluent ビルダーオブジェクト。 |
次の例は、単純な case ステートメントを定義してビルドする方法を示しています。この場合、 then() 式は、文字列だけでなく、 length(short_description) などの他の Glide 関数の結果も出力する方法を示しています。
const caseStatement = new GlideDBCaseFunctionBuilder()
.whenEqual("impact", "'1'").then("'CRITICAL'")
.whenEqual("impact", "'2'").then("category")
.whenEqual("impact", "'3'").then("length(short_description)")
.otherwise("'NOT IMPORTANT'")
.build();
const gr_incident = new GlideRecord("incident");
gr_incident.addFunction(caseStatement);
gr_incident.setLimit(10);
gr_incident.query();
while(gr_incident.next()) {
gs.info("impact: {0} case: {1}",
[gr_incident.impact, gr_incident.getValue(caseStatement)]);
}
出力:
*** Script: impact: 2 case: inquiry
*** Script: impact: 2 case: Hardware
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 2 case: database
*** Script: impact: 2 case: inquiry
*** Script: impact: 3 case: 28
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 3 case: 17
*** Script: impact: 3 case: 29
GlideDBFunctionCaseBuilder - when(文字列 func)
サポートされている「when」式の中で最も汎用性の高い when() メソッドを使用すると、満たす条件としてブール値のGlide関数を指定できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| 機能 | 文字列 | 評価時にブール値の結果を返す Glide 関数。可能な値:
|
| タイプ | 説明 |
|---|---|
| glideDBFunctionCaseBuilder | ステートメントのビルドを続行するオブジェクト。 |
次の例は、単純な case ステートメントを定義してビルドする方法を示しています。この場合、 when() メソッドを使用して、より複雑な比較式を指定します。式が true と評価された場合、対応する文字列が返されます。
const caseStatement = new GlideDBFunctionCaseBuilder()
// if impact == 1 AND category == 'Software' then output "CRITICAL SOFTWARE"
.when("and(compare(impact, '=', '1'), compare(category, '=',
'Software')")
.then("'CRITICAL SOFTWARE'")
// if impact == 1 then output "CRITICAL OTHER"
.when("compare(impact, '=', '1')")
.then("'CRITICAL OTHER'")
// if impact == 2 OR category == 'Software' then output "URGENT"
.when("or(compare(impact, '=', '2'), compare(category, '=', 'Software')")
.then("'URGENT'")
// If none of the above expressions are true, output "NOT IMPORTANT"
.otherwise("'NOT IMPORTANT'")
.build();
const gr_incident = new GlideRecord("incident");
gr_incident.addFunction(caseStatement);
gr_incident.setLimit(20);
gr_incident.query();
while(gr_incident.next()) {
gs.info("impact: {0} category: {1} case: {2}",
[gr_incident.impact, gr_incident.category, gr_incident.getValue(caseStatement)]);
}
出力:
impact: 2 category: inquiry case: URGENT
impact: 2 category: Hardware case: URGENT
impact: 1 category: inquiry case: CRITICAL OTHER
impact: 2 category: database case: URGENT
impact: 2 category: inquiry case: URGENT
impact: 3 category: software case: URGENT
impact: 1 category: inquiry case: CRITICAL OTHER
impact: 1 category: inquiry case: CRITICAL OTHER
impact: 3 category: inquiry case: NOT IMPORTANT
impact: 3 category: inquiry case: NOT IMPORTANT
impact: 3 category: hardware case: NOT IMPORTANT
impact: 3 category: inquiry case: NOT IMPORTANT
impact: 3 category: hardware case: NOT IMPORTANT
impact: 3 category: inquiry case: NOT IMPORTANT
impact: 1 category: inquiry case: CRITICAL OTHER
impact: 1 category: software case: CRITICAL SOFTWARE
impact: 3 category: inquiry case: NOT IMPORTANT
impact: 3 category: inquiry case: NOT IMPORTANT
impact: 2 category: software case: URGENT
impact: 1 category: software case: CRITICAL SOFTWARE
GlideDBFunctionCaseBuilder:whenCompare(String exp1, String op, String exp2)
比較ケース条件を開始します。
| 名前 | タイプ | 説明 |
|---|---|---|
| exp1 | 文字列 | 左の比較式。定数、フィールドへの参照、または別の Glide 関数にすることができます。 |
| op | 文字列 | 引用符で囲まれた比較演算子。 有効な値:
|
| exp2 | 文字列 | 右比較式。定数、フィールドへの参照、または別の Glide 関数にすることができます。 |
| タイプ | 説明 |
|---|---|
| GlideDBFunctionCaseBuilder | ステートメントのビルドを続行するための関数ビルダーオブジェクト。 |
次の例は、単純な case ステートメントを定義してビルドする方法を示しています。この場合、 whenCompare() メソッドを使用して、影響度フィールドの値を数値と比較し、一致する場合に指定された文字列を出力します。
const caseStatement = new GlideDBFunctionCaseBuilder()
.whenCompare("impact", "'='", "'1'").then("'CRITICAL'")
.whenCompare("impact", "'='", "'2'").then("URGENT")
.whenCompare("impact", "'='", "'3'").then("IMPORTANT")
.otherwise("'NOT IMPORTANT'")
.build();
const gr_incident = new GlideRecord("incident");
gr_incident.addFunction(caseStatement);
gr_incident.setLimit(10);
gr_incident.query();
while(gr_incident.next()) {
gs.info("impact: {0} case: {1}",
[gr_incident.impact, gr_incident.getValue(caseStatement)]);
}
出力:
*** Script: impact: 2 case: URGENT
*** Script: impact: 2 case: URGENT
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 2 case: URGENT
*** Script: impact: 2 case: URGENT
*** Script: impact: 3 case: IMPORTANT
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 3 case: IMPORTANT
*** Script: impact: 3 case: IMPORTANT
GlideDBFunctionCaseBuilder:whenEqual(文字列 exp1, 文字列 exp2)
whenCompare() と同様に、whenEqual() は等価性をチェックするための便利なメソッドです。whenCompare(leftExpression, '=', rightExpression) と等価です。
| 名前 | タイプ | 説明 |
|---|---|---|
| exp1 | 文字列 | 左の比較式。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
| exp2 | 文字列 | 右比較式。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
| タイプ | 説明 |
|---|---|
| GlideDBFunctionCaseBuilder | ステートメントのビルドを続行するための関数ビルダーオブジェクト。 |
次の例は、単純な case ステートメントを定義してビルドする方法を示しています。この場合、 whenEqual() メソッドを使用して、影響度フィールドの値を数値と比較し、一致する場合は指定された文字列を出力します。
const caseStatement = new GlideDBFunctionCaseBuilder()
.whenEqual("impact", "'1'").then("'CRITICAL'")
.whenEqual("impact", "'2'").then("'URGENT'")
.whenEqual("impact", "'3'").then("'IMPORTANT'")
.otherwise("'NOT IMPORTANT'")
.build();
const gr_incident = new GlideRecord("incident");
gr_incident.addFunction(caseStatement);
gr_incident.setLimit(10);
gr_incident.query();
while(gr_incident.next()) {
gs.info("impact: {0} case: {1}",
[gr_incident.impact, gr_incident.getValue(caseStatement)]);
}
出力:
*** Script: impact: 2 case: URGENT
*** Script: impact: 2 case: URGENT
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 2 case: URGENT
*** Script: impact: 2 case: URGENT
*** Script: impact: 3 case: IMPORTANT
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 3 case: IMPORTANT
*** Script: impact: 3 case: IMPORTANT