Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Программные интерфейсы общего назначения > Прикладные библиотеки и технологии > Библиотека менеджера QDB > Справочник по клиентскому API менеджера QDB > struct qdb_function



struct qdb_function

Пользовательская SQL-функция

Прототип:

#include <qdb/qdb.h>
struct qdb_function {
char *name;
int encoding;
int narg;
void *arg;
void (*func)( struct sqlite3_context *, int, struct Mem ** );
void (*step)( struct sqlite3_context *, int, struct Mem ** );
void (*final)( struct sqlite3_context * );
};

Описание:

Структура хранит сведения о пользовательской SQL-функции и включает следующие поля:

name
Имя этой функции, которое используется в операторах SQL. Максимальная длина имени составляет 255 символов без учета нулевого символа на конце; имя не может содержать специальные маркеры и начинаться с цифры. При попытке создать функцию с некорректным именем возникает ошибка SQLITE_ERROR.
encoding
Символьная кодировка строк, передаваемых в функцию:
SQLITE_UTF8
SQLITE_UTF16
SQLITE_UTF16BE
SQLITE_UTF16LE
narg
Количество аргументов, принимаемых функцией или агрегатом. Если указано значение -1, функция или агрегат могут принимать любое количество аргументов. Максимальное количество аргументов новой функции SQL равно 127. Если значение третьего аргумента превышает 127, возникает ошибка SQLITE_ERROR.
arg
Произвольный указатель, к которому функции получают доступ с помощью функции sqlite_user_data().
func
step
final
Указатели на функцию или агрегат. В скалярной функции необходимо реализовывать только обратный вызов func, а аргументам step и final присваивать значение NULL. В агрегирующей функции необходимо реализовывать вызовы step и final, а аргументу func присваивать значение NULL. Если набор обратных вызовов некорректен (например, одновременно заданы вызовы func и final или step, но без final), возвращается ошибка SQLITE_ERROR.

Классификация:

ЗОСРВ «Нейтрино»




Предыдущий раздел: перейти