# 36.10.处理嵌入式SQL程序

现在,您已经知道了如何生成嵌入式SQL C程序,您可能想知道如何编译它们。在编译之前,通过嵌入式SQL C预处理器运行该文件,该预处理器将使用的SQL语句转换为特殊函数调用。编译后,必须链接到包含所需函数的特殊库。这些函数从参数中获取信息,使用libpq接口执行SQL命令,并将结果放入为输出指定的参数中。

预处理器程序称为ecpg并且包含在普通的PostgreSQL安装中。嵌入式SQL程序通常以扩展名命名.pgc.如果你有一个名为项目1.pgc,只需调用以下命令即可对其进行预处理:

ecpg prog1.pgc

这将创建一个名为项目1.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_配置包装配置使用包名libecpg获取安装路径。

如果使用make管理更大项目的生成过程,那么在make文件中包含以下隐式规则可能比较方便:

ECPG = ecpg

%.c: %.pgc
        $(ECPG) $<

的完整语法ecpg命令的详细信息见ecpg.

默认情况下,ecpg库是线程安全的。但是,您可能需要使用一些线程命令行选项来编译客户机代码。