ECPG
(“嵌入式 C 用于 PostgreSQL”)是一个预处理器包,它允许将 SQL 语句嵌入到 C(或可能是 C++ 代码,尽管对 C++ 的支持不完整)中。
ECPG
添加于 PostgreSQL 6.3,尽管它似乎基于之前为 Postgres95 提供的代码。ECPG
包含在 PostgreSQL 基础发行版中。
用法
ECPG
通过创建一个扩展名不是“.c
”的源文件来使用 - 通常使用“.pgc
”。在该源文件上运行 ecpg 将创建一个扩展名为“.c”的源文件,然后可以像往常一样编译 - 请记住包含“-l ecpg”标志。
ECPG
还有一个“Informix 兼容模式”,当激活时,它会尝试使其行为类似于 Informix 的 Informix E/SQL 预编译器。但是兼容性是有限的,ECPG
不能作为将 Informix 代码移植到 PostgreSQL 的直接编译器。
更改历史记录
正在开发中
- PostgreSQL 14
DECLARE STATEMENT
命令已添加(提交 ad8305a4)
- PostgreSQL 12
- PostgreSQL 9.4
sizeof()
运算符可用作数组维度(提交 08d1b22b)
- PostgreSQL 8.4
- PostgreSQL 6.3
- 已添加(初始提交 82034103)
示例
最小的 ECPG“Hello World”代码示例
#include <stdio.h> EXEC SQL BEGIN DECLARE SECTION; char output[1024]; EXEC SQL END DECLARE SECTION; int main() { EXEC SQL CONNECT TO testdb AS con1 USER testuser; EXEC SQL SELECT 'hello world' INTO :output; printf("%s\n", output); EXEC SQL DISCONNECT ALL; return 0; }
参考文献
- PostgreSQL 文档: ECPG - 在 C 中嵌入 SQL