返回首页

gbase数据、南大通用产品文档:GBase8s文字的集合

更新日期:2024年09月11日

使用 Literal Collection 段来指定集合数据类型的值。要了解返回集合内
的单个元素的值的表达式的语法,请参阅 集合构造函数。
语法
文字的集合

文字的数据

用法
您可为 SET、MULTISET 或 LIST 数据类型指定文字的集合值。
要指定单个文字的集合值,请指定集合类型和文字的值。下列的 SQL 语句将四个
整数值插入到声明为 SET(INT NOT NULL) 的名为 set_col 的列内:
INSERT INTO table1 (set_col) VALUES (SET{6, 9, 9, 4});

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1564
以一对空的大括号({ })指定空的集合。此示例将空的列表插入到声明为
LIST(INT NOT NULL): 的列 list_col 内:
INSERT INTO table2 (list_col) VALUES ('LIST{}');
一对单引号( ')或双引号(")可定界集合。然而除了定界 SQL 标识符之外,
在启用了定界的表达式的数据库中,双引号不是有效的。
如果您将一个文字的集合作为参数传递到 SPL 例程,则请确保在围绕着参数的圆
括号与表明文字集合的开头与结尾的引号之间有空格。
元素文字的值
文字的集合 的图引用此部分。对于下列数据类型,集合的元素可为文字的值。
对于类型的集合
文字的值语法
BOOLEAN
t 或 f,作为引号括起的字符串表示 TRUE 或
FALSE
CHAR、VARCHAR、NCHAR、
NVARCHAR、CHARACTER
VARYING、LVARCHAR、DATE
引用字符串
DATETIME
文字的 DATETIME
DECIMAL、MONEY、FLOAT、
INTEGER、INT8、
SMALLFLOAT、SMALLINT
精确数值
INTERVAL
文字的 INTERVAL
Opaque 数据类型
引用字符串。对于相关联的 opaque 类型,输
入支持函数必须识别该字符串文字。
Row 类型
Literal Row。当集合元素类型为命名的 ROW
类型时,您不需要将插入了的值强制转型为命
名的 ROW 类型。
重要: 您不可指定简单大对象数据类型(BYTE 和 TEXT)作为集合的元素类型。
必须以不同类型的引号指定引用字符串,而不是括起集合的引号,以便于数据库
服务器可解析引用字符串。因此,如果您使用双引号(")来指定集合,则请使用
单引号(')来指定单个的引用字符串元素。(然而,在启用定界的标识符的数据
库中,除了用来定界 SQL 标识符之外,双引号不是有效的。)

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1565
嵌套的引号
文字的集合 的图引用此部分。
嵌套的集合是为另一集合的元素类型的集合。
无论您何时嵌套集合文字,请使用嵌套的引号。在这些情况下,您必须遵循嵌套
的引号的规则。否则,数据库不可正确地解析该字符串。
通用的规则是,对于每一新的嵌套级别,您必须加倍引号的数目。例如,如果您
为第一级使用双引号("),则你必须为第二级使用两个双引号,为第三级使用四
个双引号,为第四级使用八个,为第五级使用十六个,依此类推。
同样地,如果您对第一级使用单引号('),则您必须为第二级使用两个单引号,
为第三级使用四个单引号。对您可嵌套的级数没有限制,只要您遵循此规则即
可。
下列示例说明两级嵌套的集合文字的情况,使用双引号(")。在此,表 tab5 是
单列表,其唯一的列 set_col 为嵌套的集合类型。
下列语句创建 tab5 表:
CREATE TABLE tab5 (set_col SET(SET(INT NOT NULL) NOT NULL));
下列语句将值插入到表 tab5 内:
INSERT INTO tab5 VALUES ( "SET{""SET{34, 56, 23, 33}""}" );
对于每一文字值,开引号与收引号必须相匹配。因此,如果您以两个双引号开启
文字,则您必须以两个双引号关闭那个文字。(""a literal value"")。
要在 GBase 8s ESQL/C 程序中的 SQL 语句内指定嵌套的引号, 对于由单引号定
界的字符串之中的每个双引号,请使用 C 转义字符。否则 GBase 8s ESQL/C 预
处理器 不可正确地解释文字的集合值。例如,前面的对于 tab5 表的 INSERT 语
句会如下出现在 GBase 8s ESQL/C 程序中:
EXEC SQL insert into tab5 values ('set{\"set{34, 56, 23, 33}\"}');
要获取更多信息,请参阅 GBase 8s ESQL/C 程序员手册 中关于复合的数据类型
的章节。
如果该集合为嵌套的集合,则您必须为每一级集合类型包括集合构造函数语法。
假设您定义下列列:

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1566
nest_col SET(MULTISET (INT NOT NULL) NOT NULL);
下列语句将三个元素插入到 nest_col 列内:
INSERT INTO tabx (nest_col)
VALUES ("SET{'MULTISET{1, 2, 3}'}");

取值:[0|1]
默认值:0
说明:强制使用二进制方式比较,主要为了防止中文中有乱码(比如半个汉字)的
时候默认会把乱码之后的内容终止比较。默认关闭。
修改方式:可使用set 语句修改值也可在配置文件中修改值。仅用于global 范围。



sword GCILobClose (
GCISvcCtx *svchp,
GCIError *errhp,
GCILobLocator *locp
);

GBase 8s GCI 接口使用指南

南大通用数据技术股份有限公司 65

关闭大对象句柄。

参数
输入
/输出


svchp
输入
指定打开连接的上下文, 在此之前, 上下文必须已经被关联到
了连接句柄
errhp
输入
错误信息句柄, 该接口调用失败时, 错误信息会存在该句柄上
locp
输入
待关闭的大对象字段描述符句柄

如果执行成功, 返回GCI_SUCCESS,否则返回GCI_ERROR。