使用 GET DESCRIPTOR 语句来从系统描述符区域读取
元素 | 描述 | 限制 | 语法 |
---|---|---|---|
descriptor | 标识系统描述符区域(SDA)的带引号字符串 | 必须已经分配了系统描述符区域 | 用引号括起的字符串 |
descriptor_var | 存储 descriptor 值的变量 | 与 descriptor 相同的限制 | 特定于语言 |
field_var | 从 SDA 接收域内容的主变量 | 类型必须为可接收指定的 SDA 域的值 | 特定于语言 |
item_num | 在 SDA 中描述的项的无符号序数 | 0 ≤ item_num ≤(在 SDA 中的项描述符的数量) | 文字的数值 |
item_num_ var | 存储 item_num 的主变量 | 必须为整数数据类型 | 特定于语言 |
total_items_var | 存储在 SDA 中描述的项的数量的主变量 | 必须为整数数据类型 | 特定于语言 |
请随同 GBase 8s ESQL/C 使用此语句。
在您以 DESCRIBE . . . USING SQL DESCRIPTOR 语句描述 EXECUTE FUNCTION、INSERT、SELECT 或 UPDATE 之后,可使用 GET DESCRIPTOR。
您在 GET DESCRIPTOR 语句中引用的主变量必须在程序的 BEGIN DECLARE SECTION 中声明。
如果在赋值给任何指定的主变量期间发生错误,则主变量的内容未定义。
main() { EXEC SQL BEGIN DECLARE SECTION; int h_count; EXEC SQL END DECLARE SECTION; EXEC SQL allocate descriptor 'desc1' with max 20; /* 这部分程序会将 SELECT 或 INSERT 语句准备到 s_id 语句 id 内。 */ EXEC SQL describe s_id using sql descriptor 'desc1'; EXEC SQL get descriptor 'desc1' :h_count = count;
EXEC SQL get descriptor 'demodesc' value :index :type = TYPE, :len = LENGTH, :name = NAME; printf("Column %d: type = %d, len = %d, name = %s\n", index, type, len, name);
EXEC SQL get descriptor 'demodesc' :desc_count = count; .. . EXEC SQL fetch democursor using sql descriptor 'demodesc'; for (i = 1; i <= desc_count; i++) { if (sqlca.sqlcode != 0) break; EXEC SQL get descriptor 'demodesc' value :i :result = DATA; printf("%s ", result); } printf("\n");