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

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

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

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

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

    Замечание: Манипулировать подключениями, открытыми средствами ecpg, напрямую через libpq не следует.

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

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