RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Урегулирование результата функции SQL

void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
void sqlite3_result_blob64(sqlite3_context*,const void*,
                           sqlite3_uint64,void(*)(void*));
void sqlite3_result_double(sqlite3_context*, double);
void sqlite3_result_error(sqlite3_context*, const char*, int);
void sqlite3_result_error16(sqlite3_context*, const void*, int);
void sqlite3_result_error_toobig(sqlite3_context*);
void sqlite3_result_error_nomem(sqlite3_context*);
void sqlite3_result_error_code(sqlite3_context*, int);
void sqlite3_result_int(sqlite3_context*, int);
void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
void sqlite3_result_null(sqlite3_context*);
void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
void sqlite3_result_text64(sqlite3_context*, const char*,sqlite3_uint64,
                           void(*)(void*), unsigned char encoding);
void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
void sqlite3_result_pointer(sqlite3_context*, void*,const char*,void(*)(void*));
void sqlite3_result_zeroblob(sqlite3_context*, int n);
int sqlite3_result_zeroblob64(sqlite3_context*, sqlite3_uint64 n);

Это используется отзывами xFunc или xFinal, которые осуществляют функции SQL и совокупности. См. sqlite3_create_function() и sqlite3_create_function16().

Эти функции работают аналогично функциям привязки параметров, используемых, чтобы обязать значения принимать параметры в подготовленных запросах. Обратитесь к документации здесь.

sqlite3_result_blob() устанавливает результат определенной приложением функции в BLOB, на содержание которого указывает второй параметр и который является N байтами, где N это третий параметр.

sqlite3_result_zeroblob(C,N) и sqlite3_result_zeroblob64(C,N) устанавливают результат определенной применением функции в BLOB, содержащий все нулевые байты и N байт в размере.

sqlite3_result_double() устанавливает результат определенной применением функции в значение с плавающей точкой, определенное его 2-м аргументом.

sqlite3_result_error() и sqlite3_result_error16() заставляют осуществленную функцию SQL бросать исключение. SQLite использует последовательность, на которую указывает 2-й параметр sqlite3_result_error() или sqlite3_result_error16() как текст сообщения об ошибке. SQLite интерпретирует последовательность сообщения об ошибке от sqlite3_result_error() как UTF-8. SQLite интерпретирует последовательность от sqlite3_result_error16() как UTF-16 с использованием тех же самых правил определения порядка байтов как sqlite3_bind_text16(). Если третий параметр sqlite3_result_error() или sqlite3_result_error16() отрицателен, SQLite берет в качестве сообщения об ошибке весь текст до первого нулевого символа. Если третий параметр sqlite3_result_error() или sqlite3_result_error16() неотрицательный, SQLite берет это число байтов (не знаков) от 2-го параметра как сообщение об ошибке. sqlite3_result_error() и sqlite3_result_error16() делает частную копию текста сообщения об ошибке, прежде чем они возвратятся. Следовательно, функция запроса может освободить или изменить текст после того, как они возвратятся без вреда. Функция sqlite3_result_error_code() изменяет код ошибки, возвращенный SQLite в результате ошибки в функции. По умолчанию код ошибки SQLITE_ERROR. Последующий запрос sqlite3_result_error() или sqlite3_result_error16() перезагружает код ошибки к SQLITE_ERROR.

sqlite3_result_error_toobig() заставляет SQLite бросать ошибку при указании, что последовательность или BLOB слишком длинные.

sqlite3_result_error_nomem() заставляет SQLite бросать ошибку при указании, что выделение памяти потерпело неудачу.

sqlite3_result_int() устанавливает возвращаемое значение определенной применением функции в 32-bit signed integer, данном во 2-м аргументе. sqlite3_result_int64() устанавливает возвращаемое значение определенной применением функции в 64-bit signed integer, данном во 2-м аргументе.

sqlite3_result_null() устанавливает возвращаемое значение определенной применением функции в NULL.

sqlite3_result_text(), sqlite3_result_text16(), sqlite3_result_text16le() и sqlite3_result_text16be() устанавливают возвращаемое значение определенной применением функции в текстовую строку, которая представляется как UTF-8, родной порядок байтов UTF-16, прямой порядок байтов UTF-16 или обратный порядок байтов UTF-16, соответственно. sqlite3_result_text64() устанавливает возвращаемое значение определенной применением функции в текстовую строку в кодировании, определенном пятым (и последним) параметром, который должен быть одним из SQLITE_UTF8, SQLITE_UTF16, SQLITE_UTF16BE или SQLITE_UTF16LE. SQLite берет текстовый результат из второго параметра sqlite3_result_text*. Если 3-й параметр к какому-либо из sqlite3_result_text*, кроме sqlite3_result_text64(), отрицательный, то SQLite вычисляет длину строки, ища во 2-й параметре первый нулевой символ. Если 3-й параметр sqlite3_result_text* неотрицательный, то соответствующее число байтов (не знаков) текста, на который указывает 2-й параметр, взяты в качестве определенного применением результата функции. Если 3-й параметр неотрицательный, то это должно быть байтовое смещение в последовательность, где терминатор NUL появится, если строка заканчивается NUL. Если какие-либо знаки NUL есть в последовательности при байтовом смещении, которое меньше, чем значение 3-го параметра, то получившаяся строка будет содержать включенный NUL, и результат выражений, воздействующих на последовательности с вложенным NUL, не определен. Если 4-й параметр sqlite3_result_text* или sqlite3_result_blob не NULL, SQLite вызывает ту функцию как деструктор на тексте или результате BLOB, когда это закончило использовать тот результат. Если 4-й параметр sqlite3_result_text* или sqlite3_result_blob является специальным постоянным SQLITE_STATIC, SQLite предполагает, что результат текста или BLOB находится в постоянном месте и не копирует содержание параметра, а также не вызывает деструктор на содержании, когда это закончило использовать результат. Если 4-й параметр sqlite3_result_text* или sqlite3_result_blob является константой SQLITE_TRANSIENT, SQLite делает копию результата в место, получнное из sqlite3_malloc().

Для sqlite3_result_text16(), sqlite3_result_text16le() и sqlite3_result_text16be() и для sqlite3_result_text64(), когда кодирование не UTF8, если вход UTF16 начинается с отметки порядка байтов (BOM, U+FEFF), BOM удален из последовательности, и остальная часть последовательности интерпретируется согласно порядку байтов, определенному BOM. Порядок байтов, определенный BOM в начале текста, отвергает порядок байтов, определенный интерфейсной процедурой. Так, например, если sqlite3_result_text16le() вызван с текстом, который начинается с байтов 0xfe, 0xff (отметка обратного порядка байтов), тогда первые два байта входа пропускаются, и остающийся вход интерпретируется как текст UTF16BE.

Для входного текста UTF16 в sqlite3_result_text16(), sqlite3_result_text16be(), sqlite3_result_text16le() и sqlite3_result_text64(), если текст содержит недействительные знаки UTF16, недопустимые символы могли бы быть преобразованы в unicode-символ замены, U+FFFD.

sqlite3_result_value() устанавливает результат определенной применением функции в копию объекта unprotected sqlite3_value, определенного 2-м параметром. sqlite3_result_value() делает копию sqlite3_value так, чтобы sqlite3_value, определенный в параметре, мог измениться или быть освобожден после возврата sqlite3_result_value(). Объект protected sqlite3_value может всегда использоваться, где нужен объект unprotected sqlite3_value, таким образом, любой вид объекта sqlite3_value может использоваться с этим интерфейсом.

sqlite3_result_pointer(C,P,T,D) устанавливает результат в SQL NULL, точно так же, как sqlite3_result_null(C), за исключением того, что это также связывает указатель базового языка P или тип T с NULL таким образом, что указатель может быть получен в определенной функции SQL через sqlite3_value_pointer(). Если D не NULL, то это указатель на деструктор для параметра P. SQLite вызывает D с P как его единственный аргумент, когда SQLite закончит с P. Параметр T должен быть статической последовательностью и предпочтительно строковым литералом. sqlite3_result_pointer() является частью интерфейса прохождения указателя, добавленного в SQLite 3.20.0.

Если эта хранимая процедура вызвана из другого потока, чем содержащий определенную применением функцию, которая получила указатель sqlite3_context, результаты не определены.