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