GlideDBFunctionCaseBuilder - 전역

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기15분
  • GlideDBCaseStatementBuilder API를 사용하면 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 - build()

    조건 목록을 종료하고 최종 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_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 문을 계속 빌드하기 위한 Fluent Builder 개체입니다.

    다음 예제에서는 간단한 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 문을 계속 빌드하기 위한 Fluent Builder 개체입니다.

    다음 예제에서는 간단한 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(문자열 기능)

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

    표 8. 매개변수
    이름 유형 설명
    기능 문자열 평가 시 부울 값 결과를 도출하는 Glide 함수입니다. 가능한 값:
    • GlideFunction:비교
    • glidefunction:및
    • glidefunction:또는
    표 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