33.11. Библиотечные функции
Библиотека libecpg
в основном содержит «скрытые» функции, применяемые для реализации функциональности, выражаемой встраиваемыми командами SQL. Но есть также некоторые функции, которые можно вызывать напрямую. Заметьте, что код, задействующий эти функции, будет непереносимым.
ECPGdebug(int
с первым аргументом, отличным от нуля, включает вывод отладочных сообщений в заданныйвкл
, FILE *поток
)поток
. Журнал сообщений, полученный таким образом, будет содержать все операторы SQL с заданными входными переменными и результаты, выданные сервером Postgres Pro. Это может быть очень полезно для поиска ошибок в командах SQL.Примечание
В Windows, если библиотека ecpg и приложение скомпилированы с разными флагами, эта функция может вызвать крах приложения из-за различий внутреннего представления указателей
FILE
. В частности, флаги многопоточной/однопоточной, выпускаемой/отладочной или статической/динамической сборки должны быть одинаковыми для библиотеки и всех использующих её приложений.ECPGget_PGconn(const char *
возвращает указатель на подключение к базе данных, имеющее заданное имя. Если аргументимя_подключения
)имя_подключения
равенNULL
, возвращается указатель на текущее подключение. Если определить подключение не удаётся, возвращаетсяNULL
. Полученный указатель на подключение, если требуется, можно использовать при вызове любых других функций libpq.Примечание
Манипулировать подключениями, открытыми средствами ecpg, напрямую через libpq не следует.
ECPGtransactionStatus(const char *
возвращает состояние текущей транзакции для подключения, на которое указываетимя_подключения
)имя_подключения
. Возвращаемые коды состояния перечислены в описании входящей в libpq функцииPQtransactionStatus()
в Разделе 31.2.ECPGstatus(int
возвращает true при наличии подключения к базе данных и false в противном случае. В аргументеномер_строки
, const char*имя_подключения
)имя_подключения
можно передатьNULL
, если применяется одно подключение.
9.10. Enum Support Functions
For enum types (described in Section 8.7), there are several functions that allow cleaner programming without hard-coding particular values of an enum type. These are listed in Table 9.32. The examples assume an enum type created as:
CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple');
Table 9.32. Enum Support Functions
Notice that except for the two-argument form of enum_range
, these functions disregard the specific value passed to them; they care only about its declared data type. Either null or a specific value of the type can be passed, with the same result. It is more common to apply these functions to a table column or function argument than to a hardwired type name as suggested by the examples.