ecpg
ecpg — встроенный C-препроцессор SQL
Синтаксис
ecpg [параметр...] файл...
Описание
ecpg — это встроенный SQL препроцессор для программ, написанных на языке C. Он преобразует программы на C, содержащие SQL-выражения, заменяя их вызовами встроенных функций. Получаемые на выходе файлы можно затем скомпилировать и скомпоновать.
ecpg преобразует каждый файл, переданный в параметрах, в соответствующий файл на C. Если имя входного файла указано без расширения, подразумевается .pgc. Указанное имя, но с расширением .c, становится по умолчанию именем выходного файла. Переопределить имя выходного файла можно, воспользовавшись параметром -o.
Если в качестве имени входного файла указано -, ecpg читает программу с устройства стандартного ввода (и выводит результат в стандартный вывод, если не задан параметр -o).
Данный раздел не содержит описания встроенного SQL-языка. Для более подробной информации см. Главу 33.
Параметры
ecpg принимает в качестве аргументов:
-cАвтоматически генерировать код, написанный на языке C, из кода SQL. Сейчас это справедливо для
EXEC SQL TYPE.-CрежимУстановить режим совместимости;
режимможет принимать значениеINFORMIXилиINFORMIX_SE.-DсимволОпределить символ начала команд C-препроцессора.
-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