int sqlite3_reset(sqlite3_stmt *pStmt);
呼叫 sqlite3_reset() 函式可將已準備好的陳述式 (prepared statement) 物件重設回初始狀態,準備重新執行。任何使用 sqlite3_bind_*() API 綁定值的 SQL 陳述式變數都會保留其值。使用 sqlite3_clear_bindings() 來重設綁定。
sqlite3_reset(S) 介面會將已準備好的陳述式 (prepared statement) S 重設回其程式的開頭。
sqlite3_reset(S) 的回傳碼表示先前評估已準備好的陳述式 S 是否成功完成。如果從未在 S 上呼叫過 sqlite3_step(S),或者自上次呼叫 sqlite3_reset(S) 後未呼叫 sqlite3_step(S),則 sqlite3_reset(S) 將回傳 SQLITE_OK。
如果最近一次對已準備好的陳述式 (prepared statement) S 呼叫 sqlite3_step(S) 指示發生錯誤,則 sqlite3_reset(S) 會回傳適當的錯誤碼。即使先前沒有錯誤,但重設已準備好的陳述式的過程導致新的錯誤,sqlite3_reset(S) 介面也可能回傳錯誤碼。例如,如果帶有 RETURNING 子句的 INSERT 陳述式只執行一次,則對 sqlite3_step(S) 的一次呼叫可能會回傳 SQLITE_ROW,但整個陳述式可能仍然失敗,並且如果鎖定限制阻止資料庫變更提交,sqlite3_reset(S) 呼叫可能會回傳 SQLITE_BUSY。因此,即使先前對 sqlite3_step(S) 的呼叫沒有指出問題,應用程式也必須檢查 sqlite3_reset(S) 的回傳碼。
sqlite3_reset(S) 介面不會更改已準備好的陳述式 (prepared statement) S 上任何綁定的值。