Spec-Zone .ru
спецификации, руководства, описания, API
|
Функция инициализации должна возвратиться 0
если никакая ошибка не произошла и
1
иначе. Если ошибка происходит, xxx_init()
должен
сохранить завершенное нулем сообщение об ошибке в message
параметр. Сообщение
возвращается клиенту. Буфер сообщения MYSQL_ERRMSG_SIZE
символы долго, но следует
попытаться сохранить сообщение меньше чем к 80 символам так, чтобы оно соответствовало width стандартного
терминального экрана.
Возвращаемое значение основной функции xxx()
значение функции, для long long
и double
функции. Строковая функция должна
возвратить указатель на результат и установить *length
к длине (в байтах)
возвращаемого значения. Например:
memcpy(result, "result string", 13);*length = 13;
MySQL передает буфер к xxx()
функция используя result
параметр. Этот буфер достаточно длинен, чтобы содержать 255 символов, которые могут быть многобайтовыми
символами. xxx()
функция может сохранить результат в этом буфере, если это
соответствует, когда возвращаемое значение должно быть указателем на буфер. Если функция хранит результат в
различном буфере, это должно возвратить указатель на тот буфер.
Если Ваша строковая функция не использует предоставленный буфер (например, если это должно возвратить строку
дольше чем 255 символов), следует выделить место для своего собственного буфера с malloc()
в Вашем xxx_init()
функционируйте или Ваш
xxx()
функционируйте и освободите это в Вашем xxx_deinit()
функция. Можно сохранить выделенную память в ptr
слот в UDF_INIT
структура для повторного использования будущим xxx()
вызовы. См. Раздел
23.3.2.1, "Вызывающие последовательности UDF для Простых Функций".
Указать на возвращаемое значение NULL
в основной функции, наборе *is_null
к 1
:
*is_null = 1;
Чтобы указать на ошибочный возврат в основной функции, установить *error
к 1
:
*error = 1;
Если xxx()
наборы *error
к 1
для любой строки значение функции NULL
для того
текущей, строки и для любых последующих строк, обработанных оператором, в который XXX()
был вызван. (xxx()
даже не требуется
последующие строки.)