GlideDBFunctionCaseBuilder - 전역

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

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

    필요한 역할: 관리자, function_field_admin.

    GlideDBFunctionCaseBuilder - GlideDBFunctionCaseBuilder()

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

    표 1. 매개변수
    이름 유형 설명
    안 함

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

    var caseBuilder = new GlideDBFunctionCaseBuilder();
    

    GlideDBFunctionCaseBuilder - build()

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

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

    다음 예제에서는 간단한 case 문을 정의하고 작성하는 방법을 보여 줍니다. 충격 필드의 숫자 값에 따라 네 가지 문자열 중 하나가 출력됩니다.

    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을 적어도 한 쌍 호출한 다음, otherwise() 호출을 사용하면 when 표현식이 만족하지 않을 경우 출력할 값을 지정할 수 있습니다.

    표 4. 매개변수
    이름 유형 설명
    특급 문자열 출력할 값입니다. 상수, 필드에 대한 참조 또는 다른 Glide 함수일 수 있습니다.
    표 5. 반환
    유형 설명
    GlideDBFunctionCaseBuilder 유창한 작성기 객체는 문을 계속 작성합니다.

    다음 예제에서는 간단한 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() 표현식이 충족되는 경우 출력할 값을 지정할 수 있습니다.

    표 6. 매개변수
    이름 유형 설명
    특급 문자열 출력할 값입니다. 상수, 필드에 대한 참조 또는 다른 Glide 함수일 수 있습니다.
    표 7. 반환
    유형 설명
    GlideDBFunctionCaseBuilder 유창한 작성기 객체는 문을 계속 작성합니다.

    다음 예제에서는 간단한 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(String func)

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

    표 8. 매개변수
    이름 유형 설명
    기능 문자열 평가 시 부울 값 결과가 발생하는 Glide 함수입니다. 가능한 값:
    • GlideFunction:비교
    • Glide함수:및
    • 글라이드기능:또는
    표 9. 반환
    유형 설명
    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)

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

    표 10. 매개변수
    이름 유형 설명
    exp1 문자열 왼쪽 비교 식입니다. 상수, 필드에 대한 참조 또는 다른 Glide 함수일 수 있습니다.
    운영 문자열 따옴표로 묶인 비교 연산자입니다.

    유효한 값은 다음과 같습니다.

    • "'='"
    • "'<'"
    • "'>'"
    • "'<='"
    • "'>='"
    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_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)와 동일합니다.

    표 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_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