ecpg
ecpg — встроенный C-препроцессор SQL
Синтаксис
ecpg
[параметр
...] файл
...
Описание #
ecpg
— это встроенный SQL препроцессор для программ, написанных на языке C. Он преобразует программы на C, содержащие SQL-выражения, заменяя их вызовами встроенных функций. Получаемые на выходе файлы можно затем скомпилировать и скомпоновать.
ecpg
преобразует каждый файл, переданный в параметрах, в соответствующий файл на C. Если имя входного файла указано без расширения, подразумевается .pgc
. Указанное имя, но с расширением .c
, становится по умолчанию именем выходного файла. Переопределить имя выходного файла можно, воспользовавшись параметром -o
.
Если в качестве имени входного файла указано -
, ecpg
читает программу с устройства стандартного ввода (и выводит результат в стандартный вывод, если не задан параметр -o
).
Данный раздел не содержит описания встроенного SQL-языка. Для более подробной информации см. Главу 36.
Параметры
ecpg
принимает в качестве аргументов:
-c
Автоматически генерировать код, написанный на языке C, из кода SQL. Сейчас это справедливо для
EXEC SQL TYPE
.-C
режим
Установить режим совместимости;
режим
может принимать значения:INFORMIX
,INFORMIX_SE
иORACLE
.-D
символ
[=значение
]Определить символ начала команд препроцессора, аналогично использованию директивы
EXEC SQL DEFINE
. Еслизначение
не указано, символ определяется1
.-h
Обрабатывать заголовочные файлы. Когда добавляется этот параметр, расширением выходного файла становится не
.c
, а.h
, и расширением входного файла по умолчанию считается не.pgc
, а.pgh
. Кроме этого с данным параметром подразумевается-c
.-i
Также разбирать и системные включения.
-I
каталог
Указать дополнительный путь включаемых файлов, используемый при выполнении
EXEC SQL INCLUDE
. По умолчанию используются.
(текущий каталог),/usr/local/include
, каталог, задаваемый при компиляции Postgres Pro (обычно —/usr/local/pgsql/include
), и/usr/include
, в порядке, как это перечислено.-o
имя_файла
Задаёт
имя файла
, в который программаecpg
должна выводить результат. Указание-o -
направляет результат в устройство стандартного вывода.-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