Привязка значений массива к табличной функции CARRAY
int sqlite3_carray_bind_v2( sqlite3_stmt *pStmt, /* Statement to be bound */ int i, /* Parameter index */ void *aData, /* Pointer to array data */ int nData, /* Number of data elements */ int mFlags, /* CARRAY flags */ void (*xDel)(void*), /* Destructor for aData */ void *pDel /* Optional argument to xDel() */ ); int sqlite3_carray_bind( sqlite3_stmt *pStmt, /* Statement to be bound */ int i, /* Parameter index */ void *aData, /* Pointer to array data */ int nData, /* Number of data elements */ int mFlags, /* CARRAY flags */ void (*xDel)(void*) /* Destructor for aData */ );
Интерфейс sqlite3_carray_bind_v2(S,I,P,N,F,X,D) привязывает значение массива к параметру, который является первым аргументом табличной функции carray(). Параметр S — это указатель на подготовленный оператор, использующий функции carray(). I — индекс привязываемого параметра. I должен быть индексом параметра, который является первым аргументом табличной функции carray(). P — указатель на привязываемый массив, а N — количество элементов в массиве. Аргумент F должен иметь одно из значений констант SQLITE_CARRAY_INT32, SQLITE_CARRAY_INT64, SQLITE_CARRAY_DOUBLE, SQLITE_CARRAY_TEXT или SQLITE_CARRAY_BLOB, указывающих тип данных массива P.
Если аргумент X не является указателем NULL или одним из специальных значений SQLITE_STATIC и SQLITE_TRANSIENT, SQLite вызовет функцию X с аргументом D, когда завершит работу с данными в P. Вызов X(D) служит деструктором массива P. Деструктор X(D) вызывается, даже если вызов sqlite3_carray_bind_v2() завершается ошибкой. Если параметр X имеет специальное значение SQLITE_STATIC, SQLite считает данные статическими и никогда не вызывает деструктор. Если параметр X имеет специальное значение SQLITE_TRANSIENT, sqlite3_carray_bind_v2() создаёт собственную копию данных до возврата из функции и никогда не вызывает деструктор X.
Функция sqlite3_carray_bind() работает так же, как sqlite3_carray_bind_v2(), если параметру D присвоено значение P. Другими словами, sqlite3_carray_bind(S,I,P,N,F,X) эквивалентна sqlite3_carray_bind_v2(S,I,P,N,F,X,P).
См. также списки объектов, констант и функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/carray_bind.html