
# 声明宿主变量
宿主变量是C程序与SQL交互的桥梁，必须在特定代码块中声明。
语法如下：
声明区域以下面的代码开始：
```
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-v10-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
- 标记段代码开始和结束之间声明的宿主变量类型必须为当前支持的数据类型，请参见[表1](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0326.html#ZH-CN_TOPIC_0000002590200276__table51671655163814)。
- 对于简单的单一变量，您可以省略完整的声明段包裹，通过指令前缀进行隐式声明：EXEC SQL int i = 4。
- 不在SQL命令里使用的变量可以在特殊的声明段外面声明。只有在声明区域内声明的变量才能在SQL语句中使用。
- 若宿主变量涉及自定义的结构体或联合体，其完整的类型定义也必须包裹在声明段中，否则ecpg预编译器将无法解析其底层内存结构。
 
