codecamp

PostgreSQL 处理嵌入式 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库默认是线程安全的。不过,你可能需要使用一些线程命令行选项来编译你的客户端代码。


PostgreSQL 预处理器指令
PostgreSQL 库函数
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PostgreSQL SQL语言

PostgreSQL 服务器管理

PostgreSQL 客户端接口

PostgreSQL 服务器编程

PostgreSQL 参考

PostgreSQL 内部

PostgreSQL 附录

PostgreSQL 参考书目

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }