Chapter 30. ecpg - 在 C 里嵌入 SQL

Table of Contents
30.1. 概念
30.2. 与数据库服务器连接
30.3. 关闭连接
30.4. 运行 SQL 命令
30.5. 选取一个连接
30.6. 使用宿主变量
30.6.1. 概述
30.6.2. 声明段
30.6.3. SELECT INTO 和 FETCH INTO
30.6.4. 指示器
30.7. 动态 SQL
30.8. 使用 SQL 描述符范围
30.9. 错误处理
30.9.1. 设置回调
30.9.2. sqlca
30.9.3. SQLSTATE 与 SQLCODE 之比较
30.10. 头文件
30.11. 处理嵌入的 SQL 程序
30.12. 库函数
30.13. 内部

这章描写一种用于 PostgreSQL 的嵌入SQL包。 它与C 和C++一起使用. 这部分是由 Linus Tolke() 和 Michael Meskes()

我们承认,这份文档相当不完整。但是因为这个接口是标准,所以我们可以 在有关 SQL 的资源里找到许多额外的信息。

30.1. 概念

嵌入 SQL 程序主要由一种普通的编程语言代码组成,在我们这个场合中是 C, 并且在其中与一些特殊标记的段混合。要制作这样的程序,源代码首先 经过嵌入的 SQL 预处理器处理,它把源代码转换成普通的 C 程序, 然后这个程序可以用 C 编译工具链进行处理。

嵌入的 SQL 相比于其它的从 C 代码中处理 SQL 命令的优点有几条。首先,它替你照看那些从你的 C 程序中的变量 中传来传去数值的事情。第二,在 C 代码里嵌入 SQL 是定义在 SQL 标准里的,并且被许多其它的 SQL 数据库支持。 PostgreSQL 的实现被设计成尽可能匹配这个标准,并且 通常可以把为其它 SQL 数据库书写的 SQL 移植到 PostgreSQL 中来,反之亦然。

如上所述,为嵌入 SQL 接口写的程序通常是带着 插入进来的特殊代码的 C 程序,这些特殊代码用于执行与数据库相关的 动作。这些特殊代码通常的形式是下面这样:

EXEC SQL ...;

这些语句语法上占据 C 语句的位置。根据具体语句的不同,它们可以出现 在全局环境中或者在一个函数里。嵌入的 SQL 语句遵循 普通 SQL 代码的大小写敏感规则,而不是遵循 C 代码的。

下面的小节都是用来解释所有的嵌入 SQL 语句的。