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

-t

打开自动提交模式。在这种模式像,每个查询都自动提交, 除非它是包围在一个明确的事务块中。在缺省模式下, 命令只是在发出EXEC SQL COMMIT的时候提交。

-v

打印额外的信息,包括版本和"包含"路径。

--version

打印ecpg版本,然后退出。

--help

显示ecpg命令行参数的帮助信息并推出。

显示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