嵌入式 SQL 程序由用普通编程语言(在此为 C 语言)编写的代码和特殊标记的 SQL 命令组成。要构建程序,首先将源代码(*.pgc
)通过嵌入式 SQL 预处理器处理,将其转换为普通的 C 程序(*.c
),然后才能由 C 编译器进行处理。(有关编译和链接的详细信息,请参阅第 34.10 节。)转换后的 ECPG 应用程序通过嵌入式 SQL 库(ecpglib)调用 libpq 库中的函数,并使用标准的客户机-服务器协议与 PostgreSQL 服务器进行通信。
嵌入式SQL在从 C 代码处理命令的其他方法方面具有优势。首先,它负责将信息传递到程序变量和从程序变量中传递信息的繁琐工作。其次,在构建时会检查程序中的 SQL 代码的语法正确性。第三,嵌入式SQL代码。第二,在构建时会检查程序中的 SQL 代码的语法正确性。第三,嵌入式CC 语言是标准中规定的,并且被许多其他SQL数据库系统支持。The PostgreSQL implementation is designed to match this standard as much as possible, and it is usually possible to port embeddedSQL数据库系统支持。The PostgreSQL implementation is designed to match this standard as much as possible, and it is usually possible to port embeddedSQLC 语言程序,而无需付出太大的努力即可移植到 PostgreSQL。SQL如前所述,为嵌入式
接口编写的程序是普通的 C 程序,其中插入了用于执行数据库相关操作的特殊代码。此特殊代码始终采用以下形式SQL这些语句在语法上可以替代 C 语句。根据具体语句,它们可以出现在全局级别或函数内部。
EXEC SQL ...;
这些语句在语法上可以替代 C 语句。根据具体语句,它们可以出现在全局级别或函数内部。
嵌入式SQL语句遵循普通SQL代码的区分大小写规则,而不是 C 语言的规则。此外,根据 SQL 标准,它们还允许嵌套的 C 风格注释。但是,程序的 C 部分遵循 C 语言的标准,不允许嵌套注释。嵌入式SQL语句在解析带引号的字符串和标识符时,也使用 SQL 规则,而不是 C 规则。(分别参见第 4.1.2.1 节和第 4.1.1 节。请注意,ECPG 假定 standard_conforming_strings
为 on
。)当然,程序的 C 部分遵循 C 语言的引用规则。
以下各节将解释所有嵌入式 SQL 语句。
如果您在文档中发现任何不正确之处,与您对特定功能的使用经验不符,或者需要进一步的澄清,请使用此表单报告文档问题。