更新时间:2026-07-28 GMT+08:00
分享

声明段

要在嵌入式SQL-C程序与数据库之间实现数据的双向传递(例如将C程序的参数传递给SQL语句,或将查询结果回传给C程序),必须在特定的声明段中定义相关的C语言变量。这一段代码的核心作用是告知ecpg预处理器哪些变量将被用于SQL交互,以便预处理器能够准确识别这些变量的内存地址与数据类型。

声明段必须由EXEC SQL BEGIN DECLARE SECTION;指令开始,并以EXEC SQL END DECLARE SECTION;指令结束。在此区间内,您可以按照标准C语言语法声明变量:

EXEC SQL BEGIN DECLARE SECTION;
int x = 4;
char foo[16], bar[16];
EXEC SQL END DECLARE SECTION;
  • 标记段代码开始和结束之间声明的宿主变量类型必须为当前支持的数据类型,请参见表1
  • 对于简单的单一变量,您可以省略完整的声明段包裹,通过指令前缀进行隐式声明:EXEC SQL int i = 4。
  • 不在SQL命令里使用的变量可以在特殊的声明段外面声明。只有在声明区域内声明的变量才能在SQL语句中使用。
  • 若宿主变量涉及自定义的结构体或联合体,其完整的类型定义也必须包裹在声明段中,否则ecpg预编译器将无法解析其底层内存结构。

相关文档