南大通用GBase8s 常用SQL语句(141)

1.1GET DESCRIPTOR 语句
使用 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 使用此语句。
使用 GET DESCRIPTOR 语句来完成下列所有任务:
确定系统描述符区域描述了多少项。
确定系统描述符区域中描述的每一列或表达式的特征。
将值从系统描述符区域复制到 FETCH 语句之后的主变量。
在您以 DESCRIBE . . . USING SQL DESCRIPTOR 语句描述 EXECUTE FUNCTION、INSERT、SELECT 或 UPDATE 之后,可使用 GET DESCRIPTOR。
您在 GET DESCRIPTOR 语句中引用的主变量必须在程序的 BEGIN DECLARE SECTION 中声明。
如果在赋值给任何指定的主变量期间发生错误,则主变量的内容未定义。
示例
下列 ESQL/C 示例展示如何随同主变量使用 GET DESCRIPTOR 语句来确定名为 desc1: GET DESCRIPTOR 的系统描述符区域中描述了多少项
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; 

下列 ESQL/C 示例使用 GET DESCRIPTOR 来从 demodesc 系统描述符区域获取数据类型信息:
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);
下列 ESQL/C 示例展示您可如何将数据从 DATA 域赋值到访存之后的主变量(结果)内。对于此示例,预先约定所有返回值具有相同的数据类型:
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”);
使用 COUNT 关键字
使用 COUNT 关键字来确定在系统描述符区域中描述了多少项。
下列 GBase 8s ESQL/C 示例展示如何随同主变量使用 GET DESCRIPTOR 语句来确定在名为 desc1 的系统描述符区域中描述了多少项:
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;

}
使用 VALUE 子句
使用 VALUE 子句来获取关于描述的列或表达式的信息,或来接收数据库服务器在系统描述符区域中返回的值。
item_num 必须大于零(0)但不大于在以 ALLOCATE DESCRIPTOR 语句分配系统描述符区域时指定的项描述符的数量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值