ecpg — препроцессор встроенного SQL для языка C
ecpg [параметр...] файл...
ecpg — это препроцессор встроенного SQL для программ на языке C. Он преобразует программы на языке C со встроенными SQL-инструкциями в обычный код на языке C, заменяя вызовы SQL специальными вызовами функций. Полученные выходные файлы могут быть обработаны любым набором инструментов компилятора C.
ecpg преобразует каждый входной файл, указанный в командной строке, в соответствующий выходной файл на языке C. Если имя входного файла
не имеет расширения, .pgc подразумевается
по умолчанию. Расширение файла будет заменено
на .c для формирования имени выходного файла.
Но имя выходного файла можно переопределить, используя
-o параметр.
Если имя входного файла указано просто как -,
ecpg считывает программу со стандартного ввода
(и записывает в стандартный вывод, если это не переопределено
с помощью -o).
На данной справочной странице не приводится описание встроенного SQL. См. Глава 4.3 для получения дополнительной информации по этой теме.
ecpg принимает следующие аргументы командной строки:
-c
Автоматически генерировать определенный код на языке C из SQL-кода. В настоящее время это
поддерживается для EXEC SQL TYPE.
-C режим
Установить режим совместимости. режим может
быть INFORMIX,
INFORMIX_SE, или ORACLE.
-D symbol[=value]
Определяет символ препроцессора аналогично директиве EXEC SQL
DEFINE . Если value не указано
, символ определяется со значением 1.
-h
Обработка заголовочных файлов. При указании этого параметра выходной файл
получает расширение .h , а не .c,
, при этом расширением входного файла по умолчанию является .pgh
, а не .pgc. Кроме того, -c опция
принудительно включена.
-iТакже обрабатывать системные заголовочные файлы.
-I directory
Указать дополнительный путь, используемый для поиска файлов, включенных
с помощью команды EXEC SQL INCLUDE. По умолчанию это
. (текущий каталог),
/usr/local/include, а также
Digital Q.DataBase каталог заголовочных файлов, путь к которому
задается при компиляции (по умолчанию:
/usr/local/pgsql/include), и
/usr/include, именно в таком порядке.
-o имя_файла
Указывает, что ecpg должен записывать весь
свой вывод в указанный имя_файла.
Укажите -o - для направления всего вывода в стандартный поток вывода.
-r параметр
Выбор поведения во время выполнения. Параметр может принимать
одно из следующих значений:
no_indicatorНе использовать индикаторы, а применять специальные значения для представления значений NULL. Исторически существовали базы данных, использующие этот подход.
prepareПодготавливайте все операторы перед их использованием. Библиотека libecpg хранит кэш подготовленных операторов и повторно использует оператор при его повторном выполнении. Если кэш заполняется, libecpg освобождает наименее используемый оператор.
questionmarksРазрешить использование знака вопроса в качестве заполнителя для обеспечения совместимости. Когда-то этот режим использовался по умолчанию.
-t
Включить автоматическую фиксацию транзакций (autocommit). В этом режиме каждая SQL-команда
фиксируется автоматически, если только она не находится внутри явного
блока транзакции. В режиме по умолчанию команды фиксируются
только после того, как EXEC SQL COMMIT будет выполнена.
-vВывести дополнительную информацию, включая версию и путь поиска («include»).
--versionВывести ecpg версию и выйти.
-?--helpПоказать справку по ecpg аргументам командной строки и выйти.
При компиляции файлов кода на языке C, прошедших предварительную обработку, компилятору необходимо найти ECPG заголовочные файлы в
Digital Q.DataBase каталоге include. Поэтому может потребоваться использовать параметр -I при вызове компилятора
(например, -I/usr/local/pgsql/include).
Программы, использующие код на языке C со встроенным SQL, должны быть скомпонованы с libecpg библиотекой, например, с использованием параметров компоновщика -L/usr/local/pgsql/lib -lecpg.
Значения этих каталогов, соответствующие текущей установке, можно узнать с помощью pg_config.
Если у вас есть исходный файл встроенного SQL на языке C с именем
prog1.pgc, вы можете создать исполняемую программу, используя следующую последовательность команд:
ecpg prog1.pgc cc -I/usr/local/pgsql/include -c prog1.c cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg