集合游标允许您访问 GBase 8s ESQL/C 集合变量的个别元素。要声明集合游标,请使用 DECLARE 语句,并将集合派生表段包括在与游标关联的 SELECT 语句中。在您以 OPEN 语句打开集合游标之后,该游标允许您来访问集合变量的元素。
要从集合游标每次访存一个元素,请使用 FETCH 语句和 INTO 子句。FETCH 语句标识以集合变量关联的集合游标。INTO 子句标识保留从集合游标访存的元素值的主变量。INTO 子句中的主变量的数据类型必须与集合的元素类型相配。
CREATE TABLE children ( age SMALLINT, name VARCHAR(30), fav_colors SET(VARCHAR(20) NOT NULL), )
EXEC SQL BEGIN DECLARE SECTION;
client collection child_colors;
varchar one_favorite[21];
char child_name[31] = "marybeth";
EXEC SQL END DECLARE SECTION;
EXEC SQL allocate collection :child_colors;
/* Get structure of fav_colors column for untyped
* child_colors collection variable */
EXEC SQL select fav_colors into :child_colors
from children
where name = :child_name;
/* Declare select cursor for child_colors collection
* variable */
EXEC SQL declare colors_curs cursor for
select * from table(:child_colors);
EXEC SQL open colors_curs;
do
{
EXEC SQL fetch colors_curs into :one_favorite;
...
} while (SQLCODE == 0)
EXEC SQL close colors_curs;
EXEC SQL free colors_curs;
EXEC SQL deallocate collection :child_colors;
在访存集合元素之后,您可以 UPDATA 或 DELETE 语句修改该元素。要获取更多信息,请参阅本文档中的 UPDATE 和 DELETE 语句。您还可以 INSERT 语句将新元素插入到集合变量内。要获取更多信息,请参阅 INSERT 语句。