On this page
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 35。
Options
ecpg
接受以下命令行参数:
-c
- 从 SQL 代码自动生成某些 C 代码。目前,这适用于
EXEC SQL TYPE
。
- 从 SQL 代码自动生成某些 C 代码。目前,这适用于
-C mode
- 设置兼容模式。 *
mode
*可以是INFORMIX
或INFORMIX_SE
。
- 设置兼容模式。 *
-D symbol
- 定义一个 C 预处理器符号。
-h
- 处理头文件。指定此选项时,输出文件 extensions 变为
.h
而不是.c
,默认 Importing 文件 extensions 是.pgh
而不是.pgc
。同样,-c
选项被强制启用。
- 处理头文件。指定此选项时,输出文件 extensions 变为
-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
时提交命令。
- 打开事务自动提交。在这种模式下,每个 SQL 命令都将自动提交,除非它在显式事务块内。在默认模式下,仅在发出
-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