宿主数组变量¶
声明宿主数组变量¶
宿主数组变量是指与SQL语句交互的数组变量,它也是宿主变量的一种,所以必须在DECLARE段中说明。
声明一个宿主数组变量必须符合如下准则:
必须在DECLARE段明确说明;
不得与SQL保留字同名;
必须使用C 数据类型来声明宿主数组变量;
必须确保神通数据库数据类型和C 数据类型的正确的对应关系。
下面给出了声明宿主数组变量的一个实例:
EXEC SQL BEGIN DECLARE SECTION;
long harry1[10];
char harry2[10][21]; /* char(20) type */
char harry3[10][11]; /* date type */
EXEC SQL END DECLARE SECTION;
注解
声明的char 类型的宿主数组变量的长度通常是对应表的列实际长度加1,否则得到的数据不一定是有效的实际数据。如上面例子char arry2[10][21]中的21就是表列的长度20加1。原因在于char类型的数组最后一个要存放'\0',用于表示字符串结束。
使用宿主数组变量¶
使用一个宿主数组变量必须符合如下准则:
必须先说明后使用;
在SQL语句里必须以冒号(:)作前缀;
在C语句中不得以冒号作前缀;
只能在允许使用常量的地方使用;
可以与一个指示数组变量相关联(指示数组变量将在后面说明);
不能在动态命令中使用宿主数组变量;
只能在EXEC SQL SELECT 语句中使用,即只能出现在INTO 变量列表中;
不能定义指针宿主数组,除非对象类型,才可以定义;
除了字符串数组,其它类型最多只能是一维的。
可以在INSERT、UPDATE和DELETE语句的输入主变量中使用宿主数组变量,也可以在SELECT和FETCH语句的输出主变量中使用宿主数组变量。
在嵌入式SQL语法中,使用宿主数组和简单宿主变量的方式几乎相同。唯一的不同点在于可选的FOR子句,宿主数组可以选择该子句,用于控制数组的处理过程。