ecpg
Name
ecpg -- 嵌入的 SQL C 预处理器
Synopsis
ecpg
[_option_
...] _file_
...
描述
ecpg
是一个嵌入的用于 C 语言的 SQL 预编译器。 它把嵌有 SQL 语句的 C 程序通过将 SQL 调用替换成特殊的函数调用的方法转换成普通的 C 代码。 然后输出的文件就可以用任何 C 编译工具进行处理。
ecpg
将把命令行上给出的每个输入文件转换成对应的 C 输出文件。 输入文件最好有.pgc
扩展名,这样,这个扩展将被替换成 .c
来决定输出文件名。如果输入文件的扩展不是.pgc
, 那么输出文件名将通过在全文件名后面附加.c
来生成。 输出文件名也可以用-o
选项覆盖。
本手册页并不描述嵌入的 SQL 语句,参阅Chapter 33获更多信息。
选项
ecpg
接受下面命令行参数:
-c
为 SQL 代码自动生成某种 C 代码。目前,这个选项可以用于EXEC SQL TYPE
。
-C
_mode_
设置一个兼容模式。_mode_
可以是INFORMIX
或INFORMIX_SE
之一。
-D
_symbol_
定义一个 C 预处理器符号。
-i
同时也分析系统包含文件。
-I
_directory_
声明一个附加的包含路径。用于寻找通过EXEC SQL INCLUDE
包含的文件。 缺省是:.
(当前目录)、/usr/local/include
、 在编译时定义的PostgreSQL包含路径(缺省为: /usr/local/pgsql/include
)、/usr/include
。顺序同上。
-o
_filename_
指定ecpg
应该把它的所有输出写到给出的_filename_
里。
-r
_option_
选择一个运行时行为。_Option_
可以是下列的:
no_indicator
不使用指示器,但是使用特殊的值来表示空值。历史上有过数据库使用这种方法。
prepare
使用它们之前预备所有语句。Libecpg将保存一个预备语句的缓冲,并且如果再次执行就重复使用一个语句。 如果缓存运行满了,Libecpg将释放最近使用的语句。
questionmarks
允许问号标识为了兼容原因作为占位符。很久以前这是缺省。
-t
打开自动提交模式。在这种模式下,每个查询都自动提交,除非它是包围在一个明确的事务块中。 在缺省模式下,命令只是在发出EXEC SQL COMMIT
的时候提交。
-v
打印额外的信息,包括版本和"include"路径。
--version
打印ecpg版本然后退出。
-?``--help
显示关于ecpg命令行参数的帮助,然后退出。
注意
在编译预处理的 C 代码文件的时候,编译器需要能够找到PostgreSQL 包含目录里面的ECPG头文件。因此,在调用编译器的时候可能需要使用 -I
选项(比如-I/usr/local/pgsql/include
)。
使用了嵌入 SQL 的 C 代码必须和libecpg
库链接,比如, 使用这样的链接选项:-L/usr/local/pgsql/lib -lecpg
。
这些目录的实际值可以通过pg_config找到。
例子
如果你有一个叫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