使用集合派生表插入

要为集合变量声明 Insert 游标,应将集合派生的表这一段同与集合游标相关联的 INSERT 语句包括在一起。一个 Insert 游标允许您从集合变量选择一个或多个元素。(有关对 INSERT 语句和使用的描述,请参阅 INSERT 语句。)

该 Insert 游标必须是一个顺序游标。即,DECLARE 语句不能指定 SCROLL 关键字。

当您为集合变量声明 Insert 游标,INSERT 语句的集合派生表子句必须包含集合变量的名称。您不能为此集合变量指定一个输入参数(问号(?))。但是,可以在 INSERT 语句的 VALUES 子句中使用输入参数。该参数指示集合元素稍后将由 PUT 语句的 FROM 子句提供。

包括 INSERT 语句和集合派生表子句的集合游标允许您将多个元素插入一个集合变量。

要插入多个元素:

  1. GBase 8s ESQL/C 程序中创建一个客户端集合变量。
  2. 使用 DECLARE 语句为 INSERT 语句声明集合游标。
  3. 使用 OPEN 语句打开游标。
  4. 使用 PUT 语句和 FROM 子句将元素放入集合游标。
  5. 一旦集合变量包含所有元素,即可对表名称使用 UPDATE 语句或 INSERT 语句将集合变量的内容保存在集合列(SET 、MULTISET 或 LIST)。
  6. 使用 CLOSE 语句关闭此集合游标。
此示例为 a_set 集合变量声明了一个 Insert 游标:
EXEC SQL BEGIN DECLARE SECTION;
        client collection multiset(smallint not null) a_mset;
        int an_element;
        EXEC SQL END DECLARE SECTION;
        ...
        EXEC SQL declare mset_curs cursor for
        insert into table(:a_mset) values (?);
        EXEC SQL open mset_curs;
        while (1)
        {
        ...
        EXEC SQL put mset_curs from :an_element;
        ...
        }

要将元素插入集合变量,可使用 FROM 子句的 PUT 语句。有关对 INSERT 语句使用集合游标的代码示例,请参阅插入到 Collection 游标内