GBase8s数据库PUT插入到 Collection 游标内

插入到 Collection 游标内

Collection 游标允许您访问集合变量的单个元素。 要声明 Collection 游标,请使用 DECLARE 语

句并包括在您将其与游标关联的 INSERT 语句中的“集合派生的表”段。一旦您以 OPEN 语句打开

Collection 游标,该游标可将元素放在集合变量中。

要一次一个地将元素放到 Insert 游标内,请使用 PUT 语句和 FROM 子句。 PUT 语句指定与该集

合变量相关联的 Collection 游标。 FROM 子句标识要被插入到游标内的元素值。 在 FROM 子句

中的任何主变量的数据类型必须与该集合的元素类型相匹配。

Important: 集合变量存储集合的元素。然而,它与数据库列没有内在的联系。一旦集合变量包含

正确的元素,那么您必须以 INSERT 或 UPDATE 语句将该变量保存到实际的集合列内。

假设您有一名为 children 的表,其模式如下:

CREATE TABLE children

(

age SMALLINT,

name VARCHAR(30),

fav_colors SET(VARCHAR(20) NOT NULL)

);

下列 GBase 8s ESQL/C 程序片断展示如何使用 Insert 游标将元素放入名为 child_colors 的集合变

量内:

EXEC SQL BEGIN DECLARE SECTION;

client collection child_colors;

char *favorites[]

(

“blue”,

“purple”,

“green”,

“white”,

“gold”,

0

);

int a = 0;

char child_name[21];

EXEC SQL END DECLARE SECTION;

EXEC SQL allocate collection :child_colors;

/* 获取 fav_colors 列的结构,对于 untyped

  • child_colors 集合变量 */

EXEC SQL select fav_colors into :child_colors

from children where name = :child_name;

/* 为 child_colors 集合变量声明插入游标

  • 并打开此游标 */

EXEC SQL declare colors_curs cursor for

insert into table(:child_colors)

values (?);

EXEC SQL open colors_curs;

/* 使用 PUT 来将 favorite-color 值收集

  • 到游标内 */

while (fav_colors[a])

{

EXEC SQL put colors_curs from :favorites[:a];

a++

}

/* 刷新游标内容到集合变量 */

EXEC SQL flush colors_curs;

EXEC SQL update children set fav_colors = :child_colors;

EXEC SQL close colors_curs;

EXEC SQL deallocate collection :child_colors;

在 FLUSH 语句执行之后,集合变量 child_colors 包含元素 {“blue”, “purple”, “green”,

“white”, “gold”}。在此程序片断的末尾的 UPDATE 语句将新的集合保存到数据库的

fav_colors 列内。没有此 UPDATE 语句,就不会将新的集合插入到集合列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值