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