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возвращает true, если вы подключены к базе данных, и false, если нет.lineno, const char*connection_name)connection_nameможет бытьNULL, если используется одно соединение.