↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3
历史版本PostgreSQL 7.4 已于 2010 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

30.11. 处理嵌入式 SQL 程序 #

现在你已经知道如何编写嵌入式 SQL C 程序了, 可能还想知道如何编译它们。编译之前, 要先用嵌入式 SQL C 预处理器处理文件,它把你使用的 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的选项。

如果你使用make来管理一个大工程的构建过程,把下面的隐式规则包括在你的 makefile 中将会很方便:

ECPG = ecpg

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

ecpg命令的完整语法可见ecpg。

如果 ecpg 是用 configure 的 --enable-thread-safety 命令行选项编译的,它就是 线程安全的。(编译客户端代码时 可能需要使用其他与线程相关的 命令行选项。)

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。