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

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Измените настройки EXPLAIN для подготовленного запроса

int sqlite3_stmt_explain(sqlite3_stmt *pStmt, int eMode);

sqlite3_stmt_explain(S,E) изменяет настройки EXPLAIN для setting for подготовленного запроса S. Если E=0, 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 не может быть изменен в то время, как запрос активен. Следовательно, хорошая практика, чтобы вызвать sqlite3_reset(S) немедленно до запроса sqlite3_stmt_explain(S,E).