登录
36.10. 处理嵌入式 SQL 程序#
现在您已经了解如何形成嵌入式 SQL C 程序,您可能想知道如何编译它们。在编译之前,您需要通过嵌入式SQLC预处理器运行该文件,该预处理器将您使用的SQL语句转换为特殊函数调用。编译后,您必须链接到包含所需函数的特殊库。这些函数从参数中获取信息,使用libpq接口执行SQL命令,并将结果放入指定为输出的参数中。
预处理器程序称为ecpg
,并包含在正常的PostgreSQL安装中。嵌入式 SQL 程序通常以扩展名.pgc
命名。如果您有一个名为prog1.pgc
的程序文件,您可以通过简单地调用以下命令对其进行预处理
ecpg prog1.pgc
这将创建一个名为prog1.c
的文件。如果您的输入文件不遵循建议的命名模式,您可以使用-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
来获取安装路径。
如果您使用make管理较大项目的构建过程,则将以下隐式规则包含到您的 makefile 中可能很方便
ECPG = ecpg
%.c: %.pgc
$(ECPG) $<
ecpg
命令的完整语法在ecpg中进行了详细说明。
ecpg库默认情况下是线程安全的。但是,您可能需要使用一些线程命令行选项来编译客户端代码。