
# 声明段
要实现嵌入式SQL-C程序和数据库间的数据交互（例如：从SQL-C程序把查询语句中的参数传递给数据库，或者从数据库向嵌入式SQL-C程序传回数据），需要在特殊的标记段里面声明包含此数据的C语言变量，以便预处理器能够识别。
标记段以下面的代码开始：
```
EXEC SQL BEGIN DECLARE SECTION;
```
以下面的代码结束：
```
EXEC SQL END DECLARE SECTION;
```
在此之间，必须有常规的C语言变量声明，比如：
```
int   x = 4;
char  foo[16], bar[16];
```
![](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
- 标记段代码开始和结束之间声明的宿主变量类型必须为当前支持的数据类型，请参见[表1](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0205.html#ZH-CN_TOPIC_0000002235389849__zh-cn_topic_0000002235218813_table51671655163814)。
- 可以隐式地创建一个声明段声明变量：EXEC SQL int i = 4。
- 不在SQL命令里使用的变量可以在特殊的声明段外面声明。
- 结构体或者联合体的定义也必须在DECLARE段中列出，否则预处理器就无法处理这些类型。
 
