ecpg#

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.

-C mode

Установите режим совместимости. mode может быть 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, каталог include Tantor BE, который определен во время компиляции (по умолчанию: /usr/local/pgsql/include), и /usr/include, в указанном порядке.

-o filename

Указывает, что ecpg должен записывать все свои выводы в указанный filename. Запишите -o -, чтобы отправить все выводы на стандартный вывод.

-r option

Выбирает поведение во время выполнения. Option можно записать одним из следующих способов:

no_indicator

Не используйте индикаторы, а вместо этого используйте специальные значения для представления пустых значений. Исторически существовали базы данных, использующие этот подход.

prepare

Подготовьте все операторы перед их использованием. Libecpg будет хранить кеш подготовленных операторов и повторно использовать оператор, если он будет выполнен снова. Если кеш заполняется, libecpg будет освобождать наименее используемый оператор.

questionmarks

Разрешить вопросительный знак в качестве заполнителя по соображениям совместимости. Раньше это было установлено по умолчанию.

-t

Включите автоматический коммит транзакций. В этом режиме каждая SQL-команда автоматически подтверждается, если она не находится внутри явного блока транзакции. В режиме по умолчанию команды коммитятся только при выполнении EXEC SQL COMMIT.

-v

Выведите дополнительную информацию, включая версию и путь "include".

--version

Выведите версию ecpg и завершите работу.

-?
--help

Показать справку о командной строке для ecpg и выйти.

Примечания

При компиляции предварительно обработанных файлов кода на языке C, компилятору необходимо иметь возможность найти заголовочные файлы ECPG в каталоге include Tantor BE. Поэтому, возможно, придется использовать опцию -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