33.11. Библиотечные функции#

33.11. Библиотечные функции

33.11. Библиотечные функции

Библиотека libecpg в основном содержит скрытые функции, которые используются для реализации функциональности, выраженной встроенными SQL-командами. Но есть несколько функций, которые могут быть полезно вызывать напрямую. Обратите внимание, что это делает ваш код непереносимым.

  • ECPGdebug(int on, FILE *stream) включает режим отладки, если вызывается с ненулевым первым аргументом. Отладочные сообщения записываются в stream. Журнал содержит все SQL-запросы с вставленными в них значениями входных переменных и результаты, полученные от сервера Tantor BE. Это может быть очень полезно при поиске ошибок в ваших SQL-запросах.

    Примечание

    На Windows, если библиотеки ecpg и приложение скомпилированы с разными флагами, вызов этой функции приведет к сбою приложения, поскольку внутреннее представление указателей FILE будет отличаться. Конкретно, многопоточный/однопоточный, режим отладки/релиза и статический/динамический флаги должны быть одинаковыми для библиотеки и всех приложений, использующих эту библиотеку.

  • ECPGget_PGconn(const char *connection_name) возвращает дескриптор подключения к базе данных библиотеки, идентифицированный по заданному имени. Если connection_name установлено в NULL, возвращается текущий дескриптор подключения. Если не удается идентифицировать дескриптор подключения, функция возвращает NULL. Возвращенный дескриптор подключения может быть использован для вызова любых других функций из libpq, при необходимости.

    Примечание

    Это плохая идея напрямую манипулировать дескрипторами соединения с базой данных, созданными из ecpg, с помощью функций libpq.

  • ECPGtransactionStatus(const char *connection_name) возвращает текущий статус транзакции для указанного соединения, идентифицированного параметром connection_name. См. Раздел 31.2 и PQtransactionStatus в документации libpq для получения подробной информации о возвращаемых кодах статуса.

  • ECPGstatus(int lineno, const char* connection_name) возвращает true, если вы подключены к базе данных, и false, если нет. connection_name может быть NULL, если используется одно соединение.