ECPG(“PostgreSQL的嵌入式C”)是一个预处理器包,它允许将SQL语句嵌入到C(或可能的C++代码)中(尽管C++支持不完整)。
ECPG 在 PostgreSQL 6.3 中被添加,尽管它似乎是基于之前为 Postgres95 提供的代码。 ECPG 包含在PostgreSQL基础发行版中。
用法
ECPG 的使用方法是创建一个扩展名非“.c”的源文件 - 通常使用“.pgc”。运行 ecpg 在此源文件上将创建一个具有“.c”扩展名的源文件,然后可以像往常一样进行编译 - 记住要包含“-l ecpg”标志。
ECPG 还有一个“Informix兼容模式”,当激活时,它会尝试表现得像 Informix E/SQL 的 Informix 预编译器。然而,兼容性是有限的,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
