指示数组变量¶
指示数组变量是与DECLARE段中定义的宿主数组变量一一对应的数组变量,它们是特殊的宿主数组变量,主要用于处理空值。使用指示数组可以指派空值给输入主变量,也可以检测输出主变量是否为空值,或者输出主变量字符串是否被截断。和一般的指示变量一样,宿主数组变量的元素必须是整型的。
声明、使用指示变量必须符合如下准则:
必须在DECLARE段中明确说明;
必须先说明后使用;
必须说明为数值类型;
在SQL语句中使用时必须以冒号(:)作前缀;
在C语句中使用时不得以(:)作前缀;
不得与SQL保留字同名;
指示数组变量的一个数组元素的值为-1表示相应的宿主数组变量的数组元素为空值;
在SQL语句中必须与相关的宿主数组变量一起使用。
下面的例子插入50个职工信息到employee表,插入元组grade列为空值,指定empnum,其它列为缺省值:
EXEC SQL BEGIN DECLARE SECTION;
char hnum[50][4];
int hgrade[50];
short ind_grade[50];
EXEC SQL END DECLARE SECTION;
/* 给hnum数组赋合适的值,ind_grade数组每个元素赋值为-1 */
/* 一次性插入所有元组信息,与数据库服务端仅通信一次 */
EXEC SQL INSERT INTO employee (empnum, grade)
VALUES (:hnum, :hgrade INDICATOR :ind_grade);