Изменить параметр EXPLAIN для подготовленного оператора
int sqlite3_stmt_explain(sqlite3_stmt *pStmt, int eMode);
Интерфейс sqlite3_stmt_explain(S,E) изменяет параметр EXPLAIN для подготовленного оператора S. Если E равно нулю, то S становится обычным подготовленным оператором. Если E равно 1, то S ведет себя так, как будто его текст SQL начинался с "EXPLAIN". Если E равно 2, то S ведет себя так, как будто его текст SQL начинался с "EXPLAIN QUERY PLAN".
Вызов sqlite3_stmt_explain(S,E) может привести к повторной подготовке оператора S. SQLite пытается избежать повторной подготовки, но она может потребоваться при первом переходе в режим EXPLAIN или EXPLAIN QUERY PLAN.
Из-за возможной необходимости повторной подготовки вызов sqlite3_stmt_explain(S,E) завершится с кодом SQLITE_ERROR, если S не может быть повторно подготовлен, потому что он был создан с помощью sqlite3_prepare() вместо более новых интерфейсов sqlite3_prepare_v2() или sqlite3_prepare_v3() и, следовательно, не имеет сохраненного текста SQL для повторной подготовки.
Изменение параметра explain для подготовленного оператора не изменяет исходный текст SQL для оператора. Следовательно, если исходный текст SQL начинался с EXPLAIN или EXPLAIN QUERY PLAN, но был вызван sqlite3_stmt_explain(S,0) для преобразования оператора в обычный оператор, ключевые слова EXPLAIN или EXPLAIN QUERY PLAN все равно будут отображаться в выводе sqlite3_sql(S), хотя оператор теперь работает как обычный оператор SQL.
Эта функция возвращает SQLITE_OK, если режим explain был успешно изменен, или код ошибки, если режим explain не удалось изменить. Режим explain не может быть изменен, пока оператор активен. Поэтому рекомендуется вызывать sqlite3_reset(S) непосредственно перед вызовом sqlite3_stmt_explain(S,E).
См. также списки объектов, констант и функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/stmt_explain.html