EXEC SQL BEGIN DECLARE SECTION;
client collection set(smallint not null) a_set;
int an_int;
EXEC SQL END DECLARE SECTION;
...
EXEC SQL allocate collection :a_set;
EXEC SQL select set_col into :a_set from table1 where int_col = 6;
EXEC SQL declare set_curs cursor for
select * from table(:a_set) for update;
EXEC SQL open set_curs;
while (i<coll_size)
{
EXEC SQL fetch set_curs into :an_int;
if (an_int = 4)
{
EXEC SQL delete from table(:a_set) where current of set_curs;
break;
}
i++;
}
EXEC SQL update table1 set set_col = :a_set
where int_col = 6;
EXEC SQL deallocate collection :a_set;
EXEC SQL close set_curs;
EXEC SQL free set_curs;
执行 DELETE 语句以后,集合变量包含元素 {1,8,5,2}。位于代码段末尾的 UPDATE 语句把修改后的集合保存到 set_col 列中。如果没有 UPDATE 语句,集合列中的元素 4 就没有删除。