这章描写一种用于 PostgreSQL 的嵌入SQL包。它是由 Linus Tolke (<[email protected]>)和 Michael Meskes (<[email protected]>)写的。 最初它是为了在 C 里面使用书写的。它也可以用于 C++, 但是它还不能识别所有 C++ 构造。
这份文档相当不完整。但是因为这个接口是标准,所以我们可以在有关 SQL 的资源里找到许多额外的信息。
嵌入 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 语句的。