↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 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 11 已结束支持。 2023-11-09. 请参阅 当前版本手册.

36.10. 处理嵌入式 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 的选项。

你可以使用 pg_config 或者 pkg-config 加上包名 libecpg 来得到你的安装路径。

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

ECPG = ecpg

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

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

ecpg 库默认是线程安全的。不过,你可能需要使用一些线程命令行选项来编译你的客户端代码。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.