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

1.1SET DESCRIPTOR 语句
使用 SET DESCRIPTOR 来在系统描述符区域(SDA)中设置值。
随同 GBase 8s ESQL/C 使用此语句。
语法
在这里插入图片描述

元素 描述 限制 语法
descriptor 标识指定其值的 SDA 的字符串 先前必须分配了系统描述符区域(SDA) 引用字符串
descriptor_var 存储 descriptor 的主变量 与 descriptor 相同的限制 特定于语言
item_num 指定 SDA 中项描述符的次序位置的无符号整数 0 < item_num ≤ (当分配 SDA 时指定的项描述符的数目) 精确数值
item_num_var 存储 item_num 的主变量 与 item_num 相同的限制 特定于语言
total_items 指定 SDA 描述的项的数量的无符号整数 与 item_num 相同的限制 精确数值
total_items_var 存储 total_items 的主变量 与 total_items 的限制相同 特定于语言
用法
在您以 DESCRIBE … USING SQL DESCRIPTOR 语句已描述了 SELECT、EXECUTE FUNCTION、EXECUTE PROCEDURE、ALLOCATE DESCRIPTOR 或 INSERT 语句之后,可使用 SET DESCRIPTOR 语句。
SET DESCRIPTOR 可在这些情况下给系统描述符区域指定值:
设置系统描述符区域的 COUNT 字段来匹配您正在系统描述符区域中提供描述的项的数目。
为您正在系统描述符区域中提供描述的每一值设置项描述符
修改项描述符字段的内容
如果在给任何标识的系统描述符字段赋值期间发生错误,则将所有标识了的字段的内容设置为 0 或 NULL,这依赖于该变量的数据类型。
使用 COUNT 子句
使用 COUNT 子句来设置要在系统描述符区域中被使用的项的数目。如果您分配给系统描述符区域的项比您正在使用的项更多,则您需要将 COUNT 字段设置为您实际正在使用的项的数目。下列示例展示 GBase 8s ESQL/C 程序的片段:
EXEC SQL BEGIN DECLARE SECTION;
int count;

EXEC SQL END DECLARE SECTION;

EXEC SQL allocate descriptor ‘desc_100’; /为 100 项分配/
count = 2;
EXEC SQL set descriptor ‘desc_100’ count = :count;
使用 VALUE 子句
使用 VALUE 子句来从主变量赋值到系统描述符区域的字段内。您可为您正在为其提供描述的项赋值(诸如在 WHERE 子句中的参数),或您可在为 UPDATE 或 INSERT 语句使用 DESCRIBE 语句来填充字段之后修改值。
项描述符
使用 SET DESCRIPTOR 语句的“项描述符”部分来为系统描述符中单个字段设置值。
项描述符

元素 描述 限制 语法
input_var 为指定的项描述符字段存储数据的主变量 必须适合于指定的字段 特定于语言
literal_int 赋值给指定的项描述符字段的整数值(> 0) 依赖于 = 符号左边的关键字的限制 精确数值
literal_int_var 有 literal_int 值的变量 与 literal_int 的相同 特定于语言
要获取更多关于 TYPE 或 ITYPE 字段的有效代码以及它们的含义的信息,请参阅 设置 TYPE 或 ITYPE 字段。
要获取适用于其他字段类型的限制,请参阅 使用 VALUE 子句 之下单个字段类型的的标题。
设置 TYPE 或 ITYPE 字段
使用整数值来为每一项设置 TYPE 或 ITYPE 的值。
SQL 数据类型 整数值 X-Open 整数值 SQL 数据类型 整数值 X-Open 整数值
CHAR 0 1 MONEY 8 –
SMALLINT 1 4 DATETIME 10 –
INTEGER 2 5 BYTE 11 –
FLOAT 3 6 TEXT 12 –
SMALLFLOAT 4 – VARCHAR 13 –
DECIMAL 5 3 INTERVAL 14 –
SERIAL 6 – NCHAR 15 –
DATE 7 – NVARCHAR 16 –
下表罗列以 GBase 8s 表示可用的附加的数据类型的整数值。
SQL 数据类型 整数值 SQL 数据类型 整数值
INT8 17 固定长度 OPAQUE 类型 41
SERIAL8 18 LVARCHAR(仅限于客户端侧) 43
SET 19 BOOLEAN 45
MULTISET 20 BIGINT 52
LIST 21 BIGSERIAL 53
ROW(未命名的) 22 IDSSECURITYLABEL 2061
COLLECTION 23 ROW(命名的) 4118
可变长 OPAQUE 类型 40
在系统目录中,相同的 TYPE 常量还可出现在 syscolumns.coltype 列中。请参阅 GBase 8s SQL 参考指南。
对于更易于维护的代码,请使用为这些 SQL 数据类型预定义的常量,而不是它们的实际整数值。在 $GBASEDBT/incl/public/sqltypes.h 头文件中定义这些常量。然而,您不可在 SET DESCRIPTOR 语句中使用实际的常量名称。相反,将该常量赋值给整数主变量,并在 SET DESCRIPTOR 语句文件中指定该主变量。
下列示例展示您可在 GBase 8s ESQL/C 中如何设置 TYPE 字段:
main()
{
EXEC SQL BEGIN DECLARE SECTION;
int itemno, type;
EXEC SQL END DECLARE SECTION;

EXEC SQL allocate descriptor ‘desc1’ with max 5;

type = SQLINT; itemno = 3;
EXEC SQL set descriptor ‘desc1’ value :itemno type = :type;
}
对于 ITYPE,此信息时唯一的。当您创建不符合 X/Open 标准的动态的程序时,请使用 ITYPE。
不带 -xopen 选项的编译
如果您不带 -xopen 选项编译,则将正常的 GBase 8s SQL 代码赋值为 TYPE。您必须小心莫将正常的模式与 X/Open 模式搞混,因为可导致错误。例如,如果数据类型未在 X/Open 模式之下定义,但在正常的模式之下定义,则执行 SET DESCRIPTOR 语句可导致错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值