Перейти к основному содержимому

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