sqlite.h


Determinar si una sentencia SQL está completada

int sqlite3_complete(const char *sql);
int sqlite3_complete16(const void *sql);

Estas funciones son útiles durante la entrada de comandos en línea para determinar si el texto actualmente introducido parece formar una sentencia SQL completa o si se necesita alguna entrada adicional antes de enviar el texto a SQLite para su análisis. Estas funciones retornan 1 si la cadena de entrada parece ser una sentencia SQL completa. Se considera que una sentencia está completa si termina con un punto y coma y no es un prefijo de un de una declaración CREATE TRIGGER. Los puntos y coma que están incluídos en el interior de literales o indentificadores entre comillas o comentarios no son elementos independientes (son parte del elemento en el que están incluidos) de modo que no cuentan como terminadores de sentencia. Los espacios en blanco y comentarios que siguen a continuación del punto y coma son ignorados.

Estas funciones retornan 0 si la sentencia está incompleta. Si se produce un fallo de reserva de memoria, entonces se retorna SQLITE_NOMEM.

Estas funciones no analizan las sentencias SQL de modo que no detectan sentencias SQL incorrectas sintácticamente.

Si SQLite no ha sido inicializado usando sqlite3_initialize() antes de invocar a sqlite3_complete16() entonces sqlite3_initialize() es invocada automáticamente por sqlite3_complete16(). Si esta inicialización falla, el valor de retorno de sqlite3_complete16() será destinto de cero independientemente de si la entrada es o no una sentencia SQL completa.

La entrada a sqlite3_complete() debe ser una cadena UTF-8 terminada con cero.

La entrada a sqlite3_complete16() debe ser una cadena UTF-16 terminada con cero con el orden de bytes nativo.