int sqlite3_complete(const char *sql); int sqlite3_complete16(const void *sql);
這些常式在命令列輸入期間很有用,可用於判斷目前輸入的文字是否構成完整的 SQL 陳述式,或者在將文字送入 SQLite 進行解析之前是否需要額外輸入。如果輸入字串看起來像是一個完整的 SQL 陳述式,這些常式會回傳 1。如果陳述式以分號標記結尾,且不是格式正確的 CREATE TRIGGER 陳述式的前綴,則判斷該陳述式為完整。嵌入在字串字面值、引號識別名稱或註釋中的分號不是獨立的標記(它們是嵌入它們的標記的一部分),因此不算作陳述式終止符。最後一個分號後面的空格和註釋會被忽略。
如果陳述式不完整,這些常式會回傳 0。如果記憶體配置失敗,則會回傳 SQLITE_NOMEM。
這些常式不會解析 SQL 陳述式,因此不會偵測語法錯誤的 SQL。
如果在呼叫 sqlite3_complete16() 之前尚未使用 sqlite3_initialize() 初始化 SQLite,則 sqlite3_complete16() 會自動呼叫 sqlite3_initialize()。如果初始化失敗,則無論輸入的 SQL 是否完整,sqlite3_complete16() 的回傳值都將是非零值。
sqlite3_complete() 的輸入必須是以零結尾的 UTF-8 字串。
sqlite3_complete16() 的輸入必須是以零結尾的原生位元組順序 UTF-16 字串。