指示数组变量

指示数组变量是与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);