ecpg#
ecpg
ecpg — встроенный SQL C препроцессор
Синтаксис
ecpg [option...] file...
Описание
ecpg - это встроенный SQL-препроцессор для программ на языке C. Он преобразует программы на языке C с встроенными операторами SQL в обычный код на языке C, заменяя вызовы SQL специальными вызовами функций. Выходные файлы могут быть обработаны любым набором инструментов компилятора на языке C.
ecpg преобразует каждый входной файл, указанный в командной строке, в соответствующий выходной файл на языке C. Если имя входного файла не имеет расширения, предполагается, что это .pgc. Расширение файла будет заменено на .c для создания имени выходного файла. Однако имя выходного файла может быть переопределено с помощью опции -o.
Если имя входного файла равно просто -, ecpg считывает программу из стандартного ввода (и записывает в стандартный вывод, если это не переопределено с помощью -o).
Эта справочная страница не описывает встроенный язык SQL. См. Глава 33 для получения дополнительной информации по этой теме.
Опции
ecpg принимает следующие аргументы командной строки:
-cАвтоматически генерировать определенный код на языке C из кода SQL. В настоящее время это работает для
EXEC SQL TYPE.-CmodeУстановите режим совместимости.
modeможет бытьINFORMIX,INFORMIX_SEилиORACLE.-Dsymbol[=value]Определяет символ препроцессора, аналогично директиве
EXEC SQL DEFINE. Еслиvalueне указано, символ определяется со значением1.-hОбрабатывать заголовочные файлы. Когда указана эта опция, расширение выходного файла становится
.h, а не.c, и расширение входного файла по умолчанию становится.pgh, а не.pgc. Кроме того, опция-cпринудительно включается.-iРазберите системные включаемые файлы также.
-IdirectoryУкажите дополнительный путь для поиска файлов, включаемых с помощью
EXEC SQL INCLUDE. По умолчанию используются следующие пути:.(текущий каталог),/usr/local/include, каталог include Tantor SE, который определен во время компиляции (по умолчанию:/opt/tantor/db/17/include), и/usr/include, в указанном порядке.-ofilenameУказывает, что
ecpgдолжен записывать все свои выводы в указанныйfilename. Запишите-o -, чтобы отправить все выводы на стандартный вывод.-roptionВыбирает поведение во время выполнения.
Optionможно записать одним из следующих способов:no_indicatorНе используйте индикаторы, а вместо этого используйте специальные значения для представления пустых значений. Исторически существовали базы данных, использующие этот подход.
prepareПодготовьте все операторы перед их использованием. Libecpg будет хранить кеш подготовленных операторов и повторно использовать оператор, если он будет выполнен снова. Если кеш заполняется, libecpg будет освобождать наименее используемый оператор.
questionmarksРазрешить вопросительный знак в качестве заполнителя по соображениям совместимости. Раньше это было установлено по умолчанию.
-tВключите автоматический коммит транзакций. В этом режиме каждая SQL-команда автоматически подтверждается, если она не находится внутри явного блока транзакции. В режиме по умолчанию команды коммитятся только при выполнении
EXEC SQL COMMIT.-vВыведите дополнительную информацию, включая версию и путь "include".
--versionВыведите версию ecpg и завершите работу.
-?--helpПоказать справку о командной строке для ecpg и выйти.
Примечания
При компиляции предварительно обработанных файлов кода на языке C, компилятору необходимо иметь возможность найти заголовочные файлы ECPG в каталоге include Tantor SE. Поэтому, возможно, придется использовать опцию -I при вызове компилятора (например, -I/opt/tantor/db/17/include).
Все программы, использующие код на языке C с встроенным SQL, должны быть связаны с библиотекой libecpg, например, с использованием опций линковщика -L/opt/tantor/db/17/lib -lecpg.
Значение любого из этих каталогов, подходящее для установки, можно узнать, используя pg_config.
Примеры
Если у вас есть встроенный исходный файл SQL C с именем prog1.pgc, можно создать исполняемую программу, используя следующую последовательность команд:
ecpg prog1.pgc cc -I/opt/tantor/db/17/include -c prog1.c cc -o prog1 prog1.o -L/opt/tantor/db/17/lib -lecpg