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