void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
sqlite3_progress_handler(D,N,X,P) заставляет функцию обратного вызова X вызываться периодически во время длительных запросов к sqlite3_step() и sqlite3_prepare() и подобным для соединения с базой данных D. Использование в качестве примера для этого интерфейса должно сохранять GUI обновленным во время выполнения больших запросов.
Через параметр P передают единственный параметр к функции обратного вызова X. Параметр N является приблизительным количеством инструкций по виртуальной машине, которые оценены между последовательными вызовами отзыва X. Если N меньше, чем один, тогда обработчик прогресса выключен.
Только единственный обработчик прогресса может быть определен на связь для каждой базы данных, создание нового обработчика прогресса отменяет старый. Установка параметра X в NULL выключает обработчик прогресса. Обработчик прогресса также выключен, установив N к значению меньше, чем 1.
Если отзыв прогресса вернет ненулевое значение, операция прервана. Эта функция может быть использована, чтобы осуществить кнопку "Cancel" в диалоговом окне прогресса GUI.
Отзыв обработчика прогресса не должен делать ничего, что изменит соединение с базой данных, которое вызвало обработчик прогресса. Обратите внимание на то, что sqlite3_prepare_v2() и sqlite3_step() изменяют их соединения с базой данных.
Отзыв обработчика прогресса был бы первоначально только вызван от байт-кода. Это все еще могло бы быть вызвано во время sqlite3_prepare() и подобного, потому что тот установленный порядок мог бы вызвать переразбор схемы, которая включает управление байт-кодом. Однако, начиная с версии SQLite version 3.41.0, отзыв обработчика прогресса мог бы также быть вызван непосредственно от sqlite3_prepare(), анализируя и производя код для сложных запросов.