• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 1. MySQL 내부 사양
    2. MySQL 플러그인 API
    3. 플러그인을 위한 MySQL서비스
    4. MySQL에 새로운 함수 추가
    1. 사용자 정의 함수 인터페이스 기능
    2. 새로운 사용자 정의 함수 추가
    1. 간단한 함수를위한 UDF 호출 순서
    2. 집계 함수를위한 UDF 호출 순서
    3. UDF 인수의 처리
    4. UDF의 반환 및 오류 처리
    5. 사용자 정의 함수의 컴파일 및 설치
    6. 사용자 정의 함수의 보안 예방 조치
    3. 새로운 Native 함수의 추가
    5. MySQL 디버그 및 이식
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

24.4.2.3 UDF 인수의 처리

args 매개 변수는 다음과 같은 멤버를 가진 UDF_ARGS 구조체를 가리 킵니다.

  • unsigned int arg_count

    인수의 수입니다. 특정 수의 인수를 사용하여 함수를 호출 할 필요가있는 경우는 초기화 함수에서이 값을 검사합니다. 예 :

    if (args->arg_count != 2)
    {
        strcpy(message,"XXX() requires two arguments");
        return 1;
    }
    

    배열 인 기타 UDF_ARGS 멤버 값의 경우, 배열 참조는 제로베이스입니다. 즉, 0에서 args->arg_count - 1까지의 인덱스 값을 사용하여 배열 멤버를 참조합니다.

  • enum Item_result *arg_type

    각 인수의 형태를 포함하는 배열의 포인터. 지정 가능한 형태의 값은 STRING_RESULT , INT_RESULT , REAL_RESULT 및 DECIMAL_RESULT 입니다.

    인수가 기대하고있는 형태 인 것을 확인하고 그렇지 않은 경우 오류를 반환하려면 초기화 함수에서 arg_type 배열을 확인합니다. 예 :

    if (args->arg_type[0] != STRING_RESULT ||
        args->arg_type[1] != INT_RESULT)
    {
        strcpy(message,"XXX() requires a string and an integer");
        return 1;
    }
    

    DECIMAL_RESULT 형의 인수는 문자열로 전달되기 때문에 STRING_RESULT 값과 마찬가지로 이것들을 처리해야합니다.

    함수의 인수가 특정 형태 인 것을 요구하는 대신 초기화 함수를 사용하여 arg_type 요소를 필요한 형태로 설정할 수 있습니다. 이렇게하면 MySQL이 xxx() 의 각 호출에서 인수를 그 형태에 강제로 변경합니다. 예를 들어, 처음 두 개의 인수가 각각 문자열과 정수로 강제로 지정하려면 xxx_init() 에서 다음 작업을 수행합니다.

    args->arg_type[0] = STRING_RESULT;
    args->arg_type[1] = INT_RESULT;
    

    1.3 , DECIMAL 컬럼 값 등의 정확한 치형의 10 진수 인수는 DECIMAL_RESULT 형으로 전달됩니다. 그러나 값은 문자열로 전달됩니다. 수치를 받으려면 초기화 함수를 사용하여 인수가 REAL_RESULT 값에 강제로 변경되도록 지정합니다.

    args->arg_type[2] = REAL_RESULT;
    
  • char **args

    args->args 는 함수에 전달 된 인수의 일반적인 성질에 대한 정보를 초기화 함수에 통지합니다. 상수 인수 i 의 경우 args->args[i] 는 인수 값을 가리 킵니다. (값에 올바르게 액세스하는 방법에 대해서는 다음의 설명을 참조하십시오.) 비 정수 인수의 경우 args->args[i] 는 0 입니다. 상수 인수는 3 , 4 4*7-2 , SIN(3.14) 등의 정수만을 사용한 식입니다. 비 정수 인수는 행에 따라 변화 할 수있는 값을 참조하는 식이고, 컬럼 명, 비 정수 인수를 지정하여 호출되는 함수 등이 있습니다.

    메인 함수에 대한 각 호출에서 args->args 는 현재 처리되고있는 행에 대해 전달되는 실제 인수가 포함되어 있습니다.

    인수 i 가 NULL 의 경우 args->args[i] 는 제로 포인터 (0)입니다. 인수가 NULL 이 아닌 경우 함수는 인수를 다음과 같이 볼 수 있습니다.

    • STRING_RESULT 인자는 문자열 포인터와 길이로 지정 이진 데이터 또는 길이의 데이터를 처리 할 수 있습니다. 문자열의 내용은 args->args[i] 로 취득 할 문자열의 길이는 args->lengths[i] 입니다. 문자열이 제로로 끝나는 것으로 가정하지 마십시오.

    • INT_RESULT 형의 인수의 경우 args->args[i] 를 long long 값으로 변환해야합니다.

      long long int_val;
      int_val = *((long long*) args->args[i]);
      
    • REAL_RESULT 형의 인수의 경우 args->args[i] 를 double 값으로 변환해야합니다.

      double    real_val;
      real_val = *((double*) args->args[i]);
      
    • DECIMAL_RESULT 형의 인수의 경우 값은 문자열로 전달되기 때문에 STRING_RESULT 값과 동일하게 처리되도록하십시오.

    • ROW_RESULT 인수는 구현되어 있지 않습니다.

  • unsigned long *lengths

    초기화 함수의 경우 lengths 배열은 각 인수의 최대 문자열 길이를 보여줍니다. 이러한 변경하지 마십시오. 메인 함수의 각 호출에서 lengths 에는 현재 처리 된 행에 대해 전달 된 문자열 인수의 실제 길이가 포함되어 있습니다. INT_RESULT 형 또는 REAL_RESULT 형의 인수의 경우는 lengths 에는 (초기화 함수의 경우와 마찬가지로) 인수의 최대 길이가 포함되어 있습니다.

  • char *maybe_null

    초기화 함수에서 maybe_null 배열은 각 인수에 대한 인수 값이 NULL의 경우가 있는지 여부를 나타냅니다 (없으면 0, 및 경우 1).

  • char **attributes

    args->attributes 는 UDF 인수의 이름에 대한 정보를 알려줍니다. 인수 i 의 경우 속성 이름은 args->attributes[i] 의 문자열로 얻을 수 속성의 길이는 args->attribute_lengths[i] 입니다. 문자열이 제로로 끝나는 것으로 가정하지 마십시오.

    기본적으로 UDF 인수 이름은 인수를 지정하는 데 사용되는 식의 텍스트입니다. UDF의 경우, 인수는 옵션의 [AS] alias_name 절이 포함되어있는 경우도 있고,이 경우의 인수 이름은 alias_name 입니다. 따라서 각 인수의 attributes 값은 별칭이 지정되어 있는지에 따라 다릅니다.

    UDF my_udf() 가 다음과 같이 호출합니다.

    SELECT my_udf(expr1, expr2 AS alias1, expr3 alias2);
    

    이 경우 attributes 배열 및 attribute_lengths 배열의 값은 다음과 같습니다.

    args->attributes[0] = "expr1"
    args->attribute_lengths[0] = 5
    
    args->attributes[1] = "alias1"
    args->attribute_lengths[1] = 6
    
    args->attributes[2] = "alias2"
    args->attribute_lengths[2] = 6
    
  • unsigned long *attribute_lengths

    attribute_lengths 배열은 각 속성 이름의 길이를 보여줍니다.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved