• 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.1 간단한 함수를위한 UDF 호출 순서

이 섹션에서는 간단한 UDF를 만들 때 정의해야하는 다양한 함수에 대해 설명합니다. 섹션 24.3.2 "새로운 사용자 정의 함수 추가" 에는 MySQL이이 함수를 호출 순서가 기재되어 있습니다.

메인 xxx() 함수는이 절과 같이 선언합니다. CREATE FUNCTION 문에서 SQL 함수 XXX() 이 STRING , INTEGER 또는 REAL 중 반환 여부에 따라 반환 형식과 매개 변수는 다릅니다.

STRING 함수의 경우 :

char *xxx(UDF_INIT *initid, UDF_ARGS *args,
          char *result, unsigned long *length,
          char *is_null, char *error);

INTEGER 함수의 경우 :

long long xxx(UDF_INIT *initid, UDF_ARGS *args,
              char *is_null, char *error);

REAL 함수의 경우 :

double xxx(UDF_INIT *initid, UDF_ARGS *args,
              char *is_null, char *error);

DECIMAL 함수는 문자열 값을 반환하므로 STRING 함수와 마찬가지로 선언하십시오. ROW 함수는 구현되어 있지 않습니다.

초기화 함수 및 초기화 해제 함수는 다음과 같이 선언합니다.

my_bool xxx_init(UDF_INIT *initid, UDF_ARGS *args, char *message);

void xxx_deinit(UDF_INIT *initid);

initid 매개 변수는 세 가지 기능 모두에 전달됩니다. 이것은 함수간에 정보를 교환하는 데 사용되는 UDF_INIT 구조체를 가리 킵니다. UDF_INIT 구조체 멤버를 보여줍니다. 초기화 함수에서 변경할 멤버를 설정하십시오. (회원의 기본을 사용하는 경우는 변경하지 않고 그대로 있습니다.)

  • my_bool maybe_null

    xxx() 가 NULL 을 반환 할 수있는 경우 xxx_init() 는 maybe_null 을 1 로 설정합니다. 몇개의 인수가 maybe_null 로 선언되는 경우 기본값은 1 입니다.

  • unsigned int decimals

    소수점 이하 자리수. 기본값은 메인 함수에 전달 된 인수의 소수점 자릿수의 최대 값입니다. 예를 들어, 함수에 1.34 , 1.345 및 1.3 이 전달 된 경우 1.345 의 소수점 이하의 자리수가 3이기 때문에 기본값은 3입니다.

    인수로 소수점 이하의 자리수가 고정되어 있지 않은 경우, decimals 값은 31로 설정되어 지금은 DECIMAL , FLOAT 및 DOUBLE 데이터 유형에 허용되는 최대의 소수점 이하의 자리수에 1을 더한 값입니다 . MySQL 5.6에서는이 값은 mysql_com.h 헤더 파일의 상수 NOT_FIXED_DEC 로 사용할 수 있습니다.

    decimals 값 31은 FLOAT 컬럼 또는 DOUBLE 컬럼이 소수점 이하의 자리수를 명시하지 않고 선언 된 (예를 들어, FLOAT(10,3) 이 아닌 FLOAT ) 경우 인수 또는 1345E-3 등의 부동 소수점 상수에 사용됩니다. 이것은 함수에서 숫자 형식으로 변환 될 수있는 문자열 및 기타 숫자가 아닌 인수에도 사용됩니다.

    decimals 멤버를 초기화하는 값은 디폴트에 지나지 않습니다. 이것은 실행되는 실제 계산이 반영되도록 함수 내에서 변경할 수 있습니다. 기본값은 인수의 최대의 소수점 이하의 자리수가 사용되도록 결정합니다. 몇개의 인수의 소수점 이하의 자리수가 NOT_FIXED_DEC 인 경우, 그 값이 decimals 에 사용됩니다.

  • unsigned int max_length

    결과의 최대 길이. 기본 max_length 값은 함수의 결과 유형에 따라 다릅니다. 문자열 함수의 경우 기본값은 가장 긴 인수의 길이입니다. 정수 함수의 경우, 디폴트는 21 자리입니다. 실제 함수의 경우, 디폴트는 initid->decimals 에 의해 표시된 소수점 이하의 자리수에 13을 더한 값입니다. (수치 함수의 경우 길이는 부호 문자 또는 소수점 문자가 포함되어 있습니다.)

    BLOB 값을 반환하는 경우 max_length 를 65K 바이트 또는 16M 바이트로 설정할 수 있습니다. 이 메모리가 할당되지 않지만,이 값은 데이터를 일시적으로 저장해야하는 경우에 사용하는 데이터 형식을 결정하는 데 사용됩니다.

  • char *ptr

    함수에서 용도에 사용할 수있는 포인터. 예를 들어, 여러 함수 사이에서 initid->ptr 을 사용하여 할당 된 메모리를 교환 할 수 있습니다. xxx_init() 이 메모리를 할당하고, 그것을이 포인터에 할당합니다.

    initid->ptr = allocated_memory;
    

    xxx() 및 xxx_deinit() 는 initid->ptr 을 참조하여 메모리를 사용 또는 할당 해제합니다.

  • my_bool const_item

    xxx_init() 는 xxx() 가 항상 같은 값을 돌려주는 경우는 const_item 을 1 로 설정하고 그렇지 않으면 0 으로 설정합니다.


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