GlideDBFunctionCaseBuilder - 전역

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기15분
  • GlideDBCaseStatementBuilder를 사용하면 SQL CASE 문을 작성하고 일련의 조건을 기반으로 값을 반환할 수 있습니다.

    이 API는 GlideElement - 전역 API 정의의 일부로 사용하거나 테이블을 쿼리할 때 사용할 수 있습니다. CASE 문을 빌드하려면 먼저 해당 생성자인 GlideDBFunctionCaseBuilder()를 사용하여 GlideDBFunctionCaseBuilder 객체를 인스턴스화합니다. 그런 다음 일련의 when() 및 then() 호출과 단일 선택적 Otherwise() 호출을 사용하여 하나 이상의 케이스를 정의합니다. 마지막으로 build() 메서드를 호출하여 빌더를 마무리하고 완료된 데이터베이스 함수 case 문을 생성합니다. 그런 다음 이 문을 직접 사용하거나 다른 Glide 함수 정의의 일부로 사용할 수 있습니다.

    필요한 역할: Admin, function_field_admin.

    GlideDBFunctionCaseBuilder - GlideDBFunctionCaseBuilder()

    GlideDBFunctionCaseBuilder 객체를 인스턴스화합니다.

    표 1. 매개변수
    이름 유형 설명
    없음

    이 예에서는 GlideDBFunctionCaseBuilder 객체를 인스턴스화합니다.

    var caseBuilder = new GlideDBFunctionCaseBuilder();
    

    GlideDBFunctionCaseBuilder - 빌드()

    조건 목록을 마무리하고 최종 CASE 문을 작성합니다.

    표 2. 매개변수
    이름 유형 설명
    없음
    표 3. 반환
    유형 설명
    문자열 완료된 케이스 명세서입니다.

    다음 예제에서는 간단한 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 = new GlideRecord("incident");
    gr.addFunction(caseStatement);
    gr.setLimit(10);
    gr.query();
    while(gr.next())  {
        gs.info("impact: {0}  case: {1}",
                [gr.impact, gr.getValue(caseStatment)]);
    }

    출력:

    *** 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 - then(String exp)

    when() 메소드에 이어 then()을 사용하면 when() 표현식이 충족되면 출력 할 값을 지정할 수 있습니다.

    표 4. 매개변수
    이름 유형 설명
    특급 문자열 출력할 값입니다. 상수, 필드에 대한 참조 또는 다른 Glide 함수일 수 있습니다.
    표 5. 반환
    유형 설명
    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 = new GlideRecord("incident");
    gr.addFunction(caseStatement);
    gr.setLimit(10);
    gr.query();
    while(gr.next())  {
          gs.info("impact: {0}  case: {1}",
                  [gr.impact, gr.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 - 그렇지 않으면(String exp)

    옵션입니다. when 및 then에 대한 한 쌍 이상의 호출 후에 Otherwise() 호출을 사용하면 when 표현식이 충족되지 않는 경우 출력할 값을 지정할 수 있습니다.

    표 6. 매개변수
    이름 유형 설명
    특급 문자열 출력할 값입니다. 상수, 필드에 대한 참조 또는 다른 Glide 함수일 수 있습니다.
    표 7. 반환
    유형 설명
    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 = new GlideRecord("incident");
    gr.addFunction(caseStatement);
    gr.setLimit(10);
    gr.query();
    while(gr.next())  {
          gs.info("impact: {0}  case: {1}",
                  [gr.impact, gr.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(String func)

    지원되는 'when' 표현식 중 가장 다재다능한 when() 메서드를 사용하면 부울 값 Glide 함수를 충족 조건으로 제공할 수 있습니다.

    표 8. 매개변수
    이름 유형 설명
    Func 문자열 평가 시 부울 값 결과를 생성하는 Glide 함수입니다. 가능한 값:
    • GlideFunction:비교
    • GlideFunction:및
    • GlideFunction:또는
    표 9. 반환
    유형 설명
    glideDBFunctionCaseBuilder 문을 계속 빌드할 개체입니다.

    다음 예제에서는 간단한 case 문을 정의하고 작성하는 방법을 보여 줍니다. 이 경우 when() 메서드를 사용하여 더 복잡한 비교 표현식을 지정합니다. 식이 true로 평가되면 해당 문자열이 반환됩니다.

    const caseStatment = 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 = new GlideRecord("incident"); 
    gr.addFunction(caseStatement); 
    gr.setLimit(20); 
    gr.query(); 
    while(gr.next())  { 
          gs.info("impact: {0}  category: {1}  case: {2}", 
                [gr.impact, gr.category, gr.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(문자열 exp1, 문자열 op, 문자열 exp2)

    비교 케이스 조건을 시작합니다.

    표 10. 매개변수
    이름 유형 설명
    exp1 문자열 왼쪽 비교 식입니다. 상수, 필드에 대한 참조 또는 다른 Glide 함수일 수 있습니다.
    Op 문자열 따옴표로 묶인 비교 연산자입니다. 다음 중 하나여야 합니다.
    • "'='"
    • "'<'"
    • "'>'"
    • "'<='"
    • "'>='"
    exp2 문자열 오른쪽 비교 식입니다. 상수, 필드에 대한 참조 또는 다른 Glide 함수일 수 있습니다.
    표 11. 반환
    유형 설명
    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 = new GlideRecord("incident");
    gr.addFunction(caseStatement);
    gr.setLimit(10);
    gr.query();
    while(gr.next()) {
        gs.info("impact: {0} case: {1}",
                [gr.impact, gr.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(String exp1, String exp2)

    whenCompare()와 마찬가지로 whenEqual()은 같음을 확인하는 편리한 방법입니다. whenCompare(leftExpression, '=', rightExpression)와 동일합니다.

    표 12. 매개변수
    이름 유형 설명
    exp1 문자열 왼쪽 비교 식입니다. 상수, 필드에 대한 참조 또는 다른 Glide 함수일 수 있습니다.
    exp2 문자열 오른쪽 비교 식입니다. 상수, 필드에 대한 참조 또는 다른 Glide 함수일 수 있습니다.
    표 13. 반환
    유형 설명
    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 = new GlideRecord("incident");
    gr.addFunction(caseStatement);
    gr.setLimit(10);
    gr.query();
    while(gr.next())  {
        gs.info("impact: {0}  case: {1}",
                [gr.impact, gr.getValue(caseStatment)]);
    }

    출력:

    *** 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