嵌入式 SQL 程序由用普通编程语言(在本例中为 C)编写的代码与特殊标记部分中的 SQL 命令混合而成。要构建程序,源代码(*.pgc
)首先通过嵌入式 SQL 预处理器,将其转换为普通的 C 程序(*.c
),然后才能由 C 编译器处理。(有关编译和链接的详细信息,请参阅第 34.10 节。)转换后的 ECPG 应用程序通过嵌入式 SQL 库(ecpglib)调用 libpq 库中的函数,并使用正常的前端-后端协议与 PostgreSQL 服务器通信。
嵌入式SQLSQL 比其他处理来自 C 代码的SQL命令的方法具有优势。首先,它负责将信息从您的C程序中的变量传递到变量,反之亦然。其次,程序中的 SQL 代码在构建时会检查语法正确性。第三,嵌入式SQLSQL 在 C 语言中是在SQLSQL 标准中指定的,并得到许多其他SQL数据库系统的支持。PostgreSQL 实现旨在尽可能地匹配此标准,并且通常可以将为其他 SQL 数据库编写的嵌入式SQLSQL 程序相对轻松地移植到 PostgreSQL。
如前所述,为嵌入式SQLSQL 接口编写的程序是普通的 C 程序,其中插入了特殊代码以执行与数据库相关的操作。此特殊代码始终具有以下形式
EXEC SQL ...;
这些语句在语法上取代 C 语句。根据具体语句,它们可以出现在全局级别或函数内部。
嵌入式SQL嵌入式 SQL 语句遵循普通SQLSQL 代码的大小写规则,而不是 C 语言的大小写规则。它们还允许根据 SQL 标准嵌套 C 样式注释。但是,程序的 C 部分遵循 C 标准,不接受嵌套注释。嵌入式SQLSQL 语句同样使用 SQL 规则(而不是 C 规则)来解析带引号的字符串和标识符。(分别参见第 4.1.2.1 节和第 4.1.1 节。请注意,ECPG 假设 standard_conforming_strings
为 on
。)当然,程序的 C 部分遵循 C 引号规则。
以下各节解释所有嵌入式 SQL 语句。
如果您在文档中发现任何不正确的内容,与您对特定功能的体验不符,或者需要进一步澄清,请使用此表单报告文档问题。