Получение SQL-запроса
const char *sqlite3_sql(sqlite3_stmt *pStmt); char *sqlite3_expanded_sql(sqlite3_stmt *pStmt); #ifdef SQLITE_ENABLE_NORMALIZE const char *sqlite3_normalized_sql(sqlite3_stmt *pStmt); #endif
Интерфейс sqlite3_sql(P) возвращает указатель на копию текстового представления SQL на UTF-8, используемого для создания подготовленного оператора P, если P был создан с помощью sqlite3_prepare_v2(), sqlite3_prepare_v3(), sqlite3_prepare16_v2() или sqlite3_prepare16_v3(). Интерфейс sqlite3_expanded_sql(P) возвращает указатель на строку UTF-8, содержащую текст SQL подготовленного оператора P с расширенными связанными параметрами. Интерфейс sqlite3_normalized_sql(P) возвращает указатель на строку UTF-8, содержащую нормализованный текст SQL подготовленного оператора P. Семантика нормализации SQL-запроса не определена и может быть изменена. Как минимум, буквальные значения будут заменены соответствующими плейсхолдерами.
Например, если подготовленный оператор создан с помощью SQL-текста "SELECT $abc,:xyz", и если параметр $abc связан с целым числом 2345, а параметр :xyz не связан, то sqlite3_sql() вернёт исходную строку "SELECT $abc,:xyz", но sqlite3_expanded_sql() вернёт "SELECT 2345,NULL".
Интерфейс sqlite3_expanded_sql() возвращает NULL, если доступно недостаточно памяти для хранения результата или если результат превысит максимальную длину строки, определяемую SQLITE_LIMIT_LENGTH.
SQLITE_TRACE_SIZE_LIMIT — опция компиляции, ограничивающая размер расширения связанных параметров. Опция компиляции SQLITE_OMIT_TRACE заставляет sqlite3_expanded_sql() всегда возвращать NULL.
Строки, возвращаемые sqlite3_sql(P) и sqlite3_normalized_sql(P), управляются SQLite и автоматически освобождаются при завершении подготовки оператора. С другой стороны, строка, возвращаемая sqlite3_expanded_sql(P), получена с помощью sqlite3_malloc() и должна быть освобождена приложением, передав её в sqlite3_free().
Интерфейс sqlite3_normalized_sql() доступен только в том случае, если определена опция компиляции SQLITE_ENABLE_NORMALIZE.
См. также списки объектов, констант и функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/expanded_sql.html