宿主数组变量

声明宿主数组变量

宿主数组变量是指与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子句,宿主数组可以选择该子句,用于控制数组的处理过程。