暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在GBase数据库中,将集合值插入到列内

郑小雯 2023-12-07
118

将集合值插入到列内 

  此部分描述如何使用 DB-Access 将集合值插入到列内。它未讨论如何将个别元素插入到集 合列内。要访问或修改集合的个别元素,请使用 GBase 8s ESQL/C 程序或 SPL 例程。要获 取关于如何创建 GBase 8s ESQL/C 程序来插入到集合内的信息,请参阅《GBase 8s ESQL/C 程序员手册》。要获取关于如何创建 SPL 例程来插入到集合内的信息,请参阅 创建和使 用 SPL 例程。 

  本部分提供的这些示例是基于下图中的 manager 表。manager 表同时包含简单的和嵌套的集 合类型。

图: 创建 manager 表。 

  CREATE TABLE manager

 ( 

 mgr_name VARCHAR(30), 

 department VARCHAR(12), 

 direct_reports SET(VARCHAR(30) NOT NULL), 

 projects LIST(ROW(pro_name VARCHAR(15), 

 pro_members SET(VARCHAR(20) NOT NULL))

 NOT NULL) 

 ); 

  将值插入到简单的集合和嵌套的集合内

当您将值插入包含集合列的行内时,您插入集合列包含的所有元素的值以及其他列的值。 例如,下列语句将单个行插入到 manager 表内,该表同时包括简单的集合和嵌套的集合列:

  INSERT INTO manager(mgr_name, department, 

 direct_reports, projects)

 VALUES

 ( 

 'Sayles', 'marketing',

 "SET{'Simonian', 'Waters', 'Adams', 'Davis', 'Jones'}", 

 LIST{ 

 ROW('voyager_project', SET{'Simonian', 'Waters', 

 'Adams', 'Davis'}), 

 ROW ('horizon_project', SET{'Freeman', 'Jacobs', 

 'Walker', 'Smith', 'Cannan'}), 

 ROW ('saphire_project', SET{'Villers', 'Reeves', 

 'Doyle', 'Strongin'}

 }

 );

  将 NULL 值插入到包含 row 类型的集合内 

  要将值插入到 ROW 类型的集合内,您必须为 ROW 类型中的每一字段指定值。 通常,在集合中不允许 NULL 值。然而,如果集合的元素类型为 ROW 类型,则您可将 NULL 值插入到 row 类型的个别字段内。

您还可指定空集合。空集合是不包含任何元素的集合。要指定空集合,请使用大括号({})。 例如,下列语句将数据插入到 manager 表中的行内,但指定 direct_reports 和 projects 列为空 集合: 

  INSERT INTO manager

 VALUES ('Sayles', 'marketing', "SET{}", 

 "LIST{ROW(NULL, SET{})}" ); 

集合列不可包含 NULL 元素。由于指定 NULL 值作为集合的元素,因此下列语句返回一 个错误:

INSERT INTO manager 

 VALUES ('Cole', 'accounting', "SET{NULL}", 

 "LIST{ROW(NULL, ""SET{NULL}"")}"  

下列语法规则适用于对集合类型执行插入和更新:

使用大括号({})来划分每一集合包含的元素。 

  如果该集合为嵌套的集合,则使用大括号({})来同时划分内部集合和外部集合的元素。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论