ecpg
Эта страница переведена при помощи нейросети GigaChat.
ecpg — препроцессор встроенного SQL для языка C.
Синтаксис
ecpg [option...] file...
Описание
ecpg — это препроцессор для языка C, который позволяет использовать SQL-запросы прямо в C-программах. Он преобразует такие программы, заменяя SQL-операторы вызовами специальных функций, понятных обычному компилятору языка C. В результате получается стандартный C-код, который можно скомпилировать любым компилятором.
Утилита ecpg конвертирует каждый указанный во входных параметрах файл в соответствующий C-файл. Если расширение входного файла не указано, предполагается .pgc, а имя выходного файла будет иметь расширение .c. Это имя можно изменить с помощью параметра -o.
Если вместо имени файла указать -, ecpg будет читать данные со стандартного ввода и выводить результат в стандартный вывод (если не задано иное).
Параметры
Для утилиты ecpg существуют следующие параметры командной строки:
-c- Автоматически генерирует код на языке C из SQL-кода. В настоящее время поддерживается генерация кода для
EXEC SQL TYPE.
-C mode- Устанавливает режим совместимости. Доступные варианты:
INFORMIX,INFORMIX_SEилиORACLE.
-D symbol- Определяет символ препроцессора, аналогично директиве
EXEC SQL DEFINE. Если значение не указано, символ автоматически получает значение 1.
-h- Обрабатывает входной файл как заголовочный (
.pgh), на выходе создает файл с расширением.h. Автоматически включает параметр-c.
-i- Разбирает и системные include-файлы.
-I directory- Указывает дополнительный путь к include-файлам, используемых для
EXEC SQL INCLUDE. По умолчанию ищет в текущем каталоге (.),/usr/local/include, каталоге include-файлов PostgreSQL (обычно/usr/local/pgsql/include), а также в/usr/include.
-o filename- Записывает вывод в указанный файл. Если указано
-, то вывод будет направлен в стандартный поток вывода.
-r option- Управляет поведением на этапе выполнения. Возможные значения
option:no_indicator— не использует отдельные индикаторыNULL, вместо этого применяет специальные значения;prepare— предварительно подготавливает SQL-запросы и сохранять их в кеше.libecpgформирует кеш подготовленных выражений и будет использовать их при необходимости повторно. В случае переполнения кеша,libecpgосвободит память за счет вытеснения наименее используемых выражений;questionmarks— разрешает использование знаков вопроса?в качестве аргумента подстановки для совместимости.
-t- Включает автоматическая фиксация транзакций. Каждая команда SQL автоматически фиксируется, если она не находится внутри явного блока транзакций. В стандартном случае фиксация происходит только при выполнении команды
EXEC SQL COMMIT.
-v- Выводит дополнительную информацию, включая версию утилиты и путь к include-файлам.
--version- Выводит версию
ecpgи завершается.
-?--help- Показывает справку о параметрах командной строки утилиты
ecpgи завершается.
Примечания
Во время компиляции файлов, полученных после обработки ecpg, компилятору необходимо указать путь к заголовочным файлам ECPG, которые находятся в include-каталоге PostgreSQL. Это можно сделать с помощью параметра -I, например -I/usr/local/pgsql/include.
Программы, использующие встроенный SQL, должны компилироваться с библиотекой libecpg, например, используя параметры компоновщика -L/usr/local/pgsql/lib -lecpg.
Значение любого из этих каталогов, которое подходит для установки, можно узнать с помощью pg_config.
Примеры
Сборка исполняемой программы из исходного файла на языке C prog1.pgc со встроенным SQL:
ecpg prog1.pgc
cc -I/usr/local/pgsql/include -c prog1.c
cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg