ecpg — встроенный C-препроцессор SQL
ecpg [параметр...] файл...
ecpg это встроенный SQL препроцессор для программ, написанных на языке C. Он преобразует программы на C, содержащие SQL-выражения, заменяя их вызовами встроенных функций. Получаемые на выходе файлы можно затем скомпилировать и скомпоновать.
ecpg will convert each input file given on the
command line to the corresponding C output file. If an input file
name does not have any extension, .pgc is
assumed. The file's extension will be replaced
by .c to construct the output file name.
But the output file name can be overridden using the
-o option.
If an input file name is just -,
ecpg reads the program from standard input
(and writes to standard output, unless that is overridden
with -o).
Данный раздел не содержит описания встроенного SQL-языка. Для более подробной информации см. Главу 37.
ecpg принимает в качестве аргументов:
-cАвтоматически генерировать код, написанный на языке C, из кода SQL. Сейчас это справедливо для EXEC SQL TYPE.
-C режимУстановить режим совместимости; режим может принимать значения: INFORMIX, INFORMIX_SE и ORACLE.
-D символОпределить символ начала команд C-препроцессора.
-h
Process header files. When this option is specified, the output file
extension becomes .h not .c,
and the default input file extension is .pgh
not .pgc. Also, the -c option is
forced on.
-iТакже разбирать и системные включения.
-I каталогУказать дополнительный путь включаемых файлов, используемый при выполнении EXEC SQL INCLUDE. По умолчанию используются . (текущий каталог), /usr/local/include, каталог, задаваемый при компиляции PostgreSQL (обычно — /usr/local/pgsql/include), и /usr/include, в порядке, как это перечислено.
-o имя_файла
Specifies that ecpg should write all
its output to the given filename.
Write -o - to send all output to standard output.
-r параметрОпределяет поведение времени исполнения. Флаг может принимать следующие значения:
no_indicatorИспользовать специальные символы для представления значений null. Исторически некоторые базы данных используют такой подход.
prepareСформировать подготовленные выражения. libecpg сформирует кеш подготовленных выражений и будет использовать их при необходимости повторно. В случае переполнения кеша, libecpg освободит память за счёт вытеснения наименее используемых выражений.
questionmarksРазрешает использовать знак вопроса в качестве аргумента подстановки в целях совместимости. Ранее это было поведением по умолчанию.
-tВключить автоматическую фиксацию транзакций. В этом режиме каждая SQL-команда будет автоматически фиксироваться, пока не будет явно включена в блок транзакции. В режиме по умолчанию команды фиксируются лишь при явном вызове EXEC SQL COMMIT.
-vВывести информацию о версии, а также путях поиска включаемых файлов.
--versionВывести версию ecpg.
-?--helpВывести справку по команде ecpg.
При компиляции полученных файлов, компилятор должен иметь возможность найти заголовочные файлы ECPG в каталоге включений PostgreSQL. Для этого можно использовать флаг -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