24.4.2.4 UDF의 반환 및 오류 처리
초기화 함수는 오류가 발생하지 않은 경우는 0
, 그리고 그렇지 않은 경우는 1
을 돌려줍니다. 오류가 발생했을 경우, xxx_init()
는 message
매개 변수에 NULL로 끝나는 오류 메시지를 저장합니다. 메시지는 클라이언트에 반환됩니다. 메시지 버퍼의 길이는 MYSQL_ERRMSG_SIZE
문자이지만, 표준 터미널 화면의 폭 메시지에 맞게 메시지를 80 자 미만으로 유지하도록하십시오.
long long
함수 및 double
함수의 경우 메인 함수 xxx()
의 반환 값은 함수 값입니다. 문자열 함수는 결과 포인터를 반환하고 *length
를 반환 (바이트) 길이로 설정합니다. 예 :
memcpy(result, "result string", 13); *length = 13;
MySQL은 result
매개 변수를 사용하여 버퍼를 xxx()
함수에 전달합니다. 이 버퍼는 255자를 유지하기위한 충분한 길이가 멀티 바이트 문자도 유지할 수 있습니다. xxx()
함수는이 버퍼에 결과를 저장할 수 (결과가 맞다면),이 경우 반환 값에 버퍼에 대한 포인터를 설정하십시오. 함수가 다른 버퍼에 결과를 저장하는 경우 해당 버퍼에 대한 포인터를 반환합니다.
문자열 함수에 제공된 버퍼를 사용하지 않는 경우 (예를 들어, 255 자보다 긴 문자열을 돌려 줄 필요가있는 경우), xxx_init()
함수 또는 xxx()
함수에서 malloc()
을 사용하여 자신의 버퍼 영역을 할당 xxx_deinit()
함수에서 그 공간을 확보해야합니다. 이후 xxx()
의 호출로 재사용 할 수 있도록 할당 된 메모리를 UDF_INIT
구조 ptr
슬롯에 저장할 수 있습니다. 섹션 24.3.2.1 "간단한 함수를위한 UDF 호출 순서" 를 참조하십시오.
메인 함수에서 반환 값이 NULL
임을 나타내려면 *is_null
을 1
로 설정합니다.
*is_null = 1;
메인 함수에서 오류를 반환하는 것을 보여주기 위해 *error
를 1
로 설정합니다.
*error = 1;
xxx()
가 하나의 행에 *error
에 1
을 설정 한 경우 XXX()
를 호출 한 명령문이 처리되는 현재의 행 및 후속 행의 함수 값은 NULL
입니다. (후속 행에서 xxx()
가 호출되지 않습니다.)