On this page
35.10. 处理嵌入式 SQL 程序
既然您已经知道如何形成嵌入式 SQL C 程序,那么您可能想知道如何编译它们。在编译之前,您需要通过嵌入式 SQL C 预处理程序运行文件,该预处理程序会将您以前使用的 SQL 语句转换为特殊函数调用。编译后,必须链接一个包含所需功能的特殊库。这些函数从参数中获取信息,使用 libpq 接口执行 SQL 命令,并将结果放入为输出指定的参数中。
预处理程序称为ecpg
,并且包含在常规 PostgreSQL 安装中。嵌入式 SQL 程序通常以 extensions.pgc
命名。如果您有一个名为prog1.pgc
的程序文件,则可以通过简单的调用对其进行预处理:
ecpg prog1.pgc
这将创建一个名为prog1.c
的文件。如果 Importing 文件不遵循建议的命名模式,则可以使用-o
选项显式指定输出文件。
预处理后的文件可以正常编译,例如:
cc -c prog1.c
生成的 C 源文件包括 PostgreSQL 安装的头文件,因此,如果将 PostgreSQL 安装在默认情况下未搜索的位置,则必须在编译命令行中添加诸如-I/usr/local/pgsql/include
之类的选项。
要链接嵌入式 SQL 程序,您需要包含libecpg
库,如下所示:
cc -o myprog prog1.o prog2.o ... -lecpg
同样,您可能必须在该命令行中添加诸如-L/usr/local/pgsql/lib
之类的选项。
您可以将pg_config
或pkg-config
与程序包名称libecpg
一起使用,以获取安装路径。
如果使用 makeManagement 较大项目的构建过程,则在 makefile 中包含以下隐式规则可能会很方便:
ECPG = ecpg
%.c: %.pgc
$(ECPG) $<
ecpg中详细介绍了ecpg
命令的完整语法。
ecpg 库默认情况下是线程安全的。但是,您可能需要使用一些线程化命令行选项来编译 Client 端代码。