ecpg
ecpg — встроенный C-препроцессор SQL
Синтаксис
ecpg
[параметр
...] файл
...
Описание
ecpg
это встроенный SQL препроцессор для программ, написанных на языке C. Он преобразует программы на C, содержащие SQL-выражения, заменяя их вызовами встроенных функций. Получаемые на выходе файлы можно затем скомпилировать и скомпоновать.
ecpg
преобразует каждый файл, переданный в параметрах, в соответствующий файл на C. Входным файлам лучше давать расширения .pgc
. Это расширение будет автоматически заменяться на .c
. Имя выходного файла также можно задать в параметре -o
.
Данный раздел не содержит описания встроенного SQL-языка. Для более подробной информации см. Главу 33.
Параметры
ecpg
принимает в качестве аргументов:
-c
Автоматически генерировать код, написанный на языке C, из кода SQL. Сейчас это справедливо для
EXEC SQL TYPE
.-C
режим
Установить режим совместимости;
режим
может принимать значениеINFORMIX
илиINFORMIX_SE
.-D
символ
Определить символ начала команд C-препроцессора.
-i
Также разбирать и системные включения.
-I
каталог
Указать дополнительный путь включаемых файлов, используемый при выполнении
EXEC SQL INCLUDE
. По умолчанию используются.
(текущий каталог),/usr/local/include
, каталог, задаваемый при компиляции Postgres Pro (обычно —/usr/local/pgsql/include
), и/usr/include
, в порядке, как это перечислено.-o
имя_файла
Указывает
ecpg
имя файла
, в который будет осуществлен вывод.-r
параметр
Определяет поведение времени исполнения.
Флаг
может принимать следующие значения:no_indicator
Использовать специальные символы для представления значений null. Исторически некоторые базы данных используют такой подход.
prepare
Сформировать подготовленные выражения. libecpg сформирует кеш подготовленных выражений и будет использовать их при необходимости повторно. В случае переполнения кеша, libecpg освободит память за счёт вытеснения наименее используемых выражений.
questionmarks
Разрешает использовать знак вопроса в качестве аргумента подстановки в целях совместимости. Ранее это было поведением по умолчанию.
-t
Включить автоматическую фиксацию транзакций. В этом режиме каждая SQL-команда будет автоматически фиксироваться, пока не будет явно включена в блок транзакции. В режиме по умолчанию команды фиксируются лишь при явном вызове
EXEC SQL COMMIT
.-v
Вывести информацию о версии, а также путях поиска включаемых файлов.
--version
Вывести версию ecpg.
-?
--help
Вывести справку по команде ecpg.
Замечания
При компиляции полученных файлов, компилятор должен иметь возможность найти заголовочные файлы ECPG в каталоге включений Postgres Pro. Для этого можно использовать флаг -I
во время компиляции, например, -I/usr/local/pgsql/include
.
Программы на C со встроенным 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