![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
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).
Choose any three.
SQLite C Interface
Измените настройки EXPLAIN для подготовленного запроса
int sqlite3_stmt_explain(sqlite3_stmt *pStmt, int eMode);