ecpg

ecpg —嵌入式 SQL C 预处理程序

Synopsis

ecpg [ option ...] file ...

Description

ecpg是 C 程序的嵌入式 SQL 预处理程序。通过用特殊函数调用替换 SQL 调用,它将带有嵌入式 SQL 语句的 C 程序转换为普通 C 代码。然后可以使用任何 C 编译器工具链处理输出文件。

ecpg会将命令行上给定的每个 Importing 文件转换为相应的 C 输出文件。如果 Importing 文件名没有 extensions,则假定为.pgc。该文件的 extensions 将由.c代替以构造输出文件名。但是,可以使用-o选项覆盖输出文件名。

如果 Importing 文件名仅为-,则ecpg从标准 Importing 读取程序(并写入标准输出,除非用-o覆盖)。

该参考页未介绍嵌入式 SQL 语言。有关该主题的更多信息,请参见Chapter 36

Options

ecpg接受以下命令行参数:

  • -c

    • 从 SQL 代码自动生成某些 C 代码。目前,这适用于EXEC SQL TYPE
  • -C mode

    • 设置兼容模式。 * mode *可以是INFORMIXINFORMIX_SEORACLE
  • -D symbol

    • 定义一个 C 预处理器符号。
  • -h

    • 处理头文件。指定此选项时,输出文件 extensions 变为.h而不是.c,默认 Importing 文件 extensions 是.pgh而不是.pgc。同样,-c选项被强制启用。
  • -i

    • 解析系统还包括文件。
  • -I directory

    • 指定其他包含路径,用于查找通过EXEC SQL INCLUDE包含的文件。默认值为.(当前目录),/usr/local/include,PostgreSQL 包含在编译时定义的目录(默认为/usr/local/pgsql/include)和/usr/include(按此 Sequences)。
  • -o filename

    • 指定ecpg应将其所有输出写入给定* filename *。写入-o -以将所有输出发送到标准输出。
  • -r option

    • 选择运行时行为。 * Option *可以是以下之一:
  • no_indicator

    • 不要使用 Metrics,而应使用特殊值来表示空值。历史上一直有使用这种方法的数据库。

    • prepare

      • 使用它们之前,请准备所有语句。 Libecpg 将保留已准备好的语句的缓存,并在再次执行语句时重用该语句。如果缓存已满,libecpg 将释放最少使用的语句。
    • questionmarks

      • 出于兼容性原因,允许问号作为占位符。很久以前,这是默认设置。
  • -t

    • 打开事务自动提交。在这种模式下,每个 SQL 命令都将自动提交,除非它在显式事务块内。在默认模式下,仅在发出EXEC SQL COMMIT时提交命令。
  • -v

    • 打印其他信息,包括版本和“ include”路径。
  • --version

    • 打印 ecpg 版本并退出。
  • -?
    --help

    • 显示有关 ecpg 命令行参数的帮助,然后退出。

Notes

编译预处理的 C 代码文件时,编译器需要能够在 PostgreSQL 包含目录中找到 ECPG 头文件。因此,您在调用编译器(例如-I/usr/local/pgsql/include)时可能必须使用-I选项。

使用带有嵌入式 SQL 的 C 代码的程序必须针对libecpg库进行链接,例如,使用链接器选项-L/usr/local/pgsql/lib -lecpg

可以使用pg_config找到适合安装的这两个目录的值。

Examples

如果您有一个名为prog1.pgc的嵌入式 SQL C 源文件,则可以使用以下命令序列创建一个可执行程序:

ecpg prog1.pgc
cc -I/usr/local/pgsql/include -c prog1.c
cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg