返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

30.11. 处理嵌入的 SQL 程序

发布于 2019-09-30 03:08:26 字数 1284 浏览 1114 评论 0 收藏 0

既然现在你已经有了如何构成嵌入的 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 里有详细介绍。

如果使用 configure--enable-thread-safety 选项编译了 ecpg 库,那么它是线程安全的。 (你可能需要使用其它线程命令行选项编译你的客户端代码。)

<
PrevHomeNext
头文件Up库函数

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文