使用 ALLOCATE DESCRIPTOR 语句为系统描述符区域(SDA)声明和分配内存。在 ESQL/C 中使用此语句
用法
ALLOCATE DESCRIPTOR 语句创建新的系统描述符区域,该区域是内存中的一个位置,存放 DESCRIBE 语句可以显示的信息,或存放关于查询的 WHERE 子句的信息。
系统描述符区域(SDA)包含一个或多个称为 item descriptors 的字段。每个项描述符都有一个数据库服务器可以接收或发送的数据值。项描述符也包含关于该数据的信息,例如数据类型、长度、小数位、精度和可以为 NULL 值。
系统描述符区域存放 DESCRIBE … USING SQL DESCRIPTOR 语句获取的信息,或者存放关于一个动态执行语句中的 WHERE 子句的信息。
如果您分配一个系统描述符区域的名称与一个现有系统描述符区域的名称相同,则数据库服务器返回一条错误消息。如果您使用 DEALLOCATE DESCRIPTOR 语句释放了该描述符,则 ALLOCATE DESCRIPTOR 语句可以重新使用同样的描述符名称。
WITH MAX 子句
您可以使用 WITH MAX 子句标识您需要的项描述符的最大数目。
当您使用此子句时,COUNT 字段设置为您指定的 items 数目。如果您不指定 WITH MAX 子句,COUNT 字段的缺省值为 100 。您可以使用 SET DESCRIPTOR 语句更改 COUNT 字段的值。
ALLOCATE DESCRIPTOR 语句示例
以下示例显示了有效的 ALLOCATE DESCRIPTOR 语句。每个示例都包含 WITH MAX 子句。此示例使用嵌入的变量名称标识系统描述符区域,并指定所需的项描述符:
EXEC SQL allocate descriptor :descname with max :occ;
下一示例使用加引号的字符串 desc1 作为系统描述符的标识,并且使用无符号整数 3 指定该 desc1 区域中所需的项描述符的最大数目:
EXEC SQL allocate descriptor ‘desc1’ with max 3;