Insert 游标

当您将 INSERT 语句与一个游标相关联的时候,该游标称为 Insert 游标。Insert 游标是一个数据结构,它代表 INSERT 语句将要添加到数据库的行。INSERT 游标简单地插入数据行;它不可以用于取得数据。要创建 Insert 游标,应将一个游标与 INSERT 语句的限制格式相关联。INSERT 语句必须包括 VALUES 子句;它不可以包含嵌入的 SELECT 语句。

如果想要在 INSERT 操作中将多个行添加到数据库,应创建一个 Insert 游标。Insert 游标允许将大量的插入数据缓存到内存中,并在缓冲区满的时候写入磁盘,具体如以下这些步骤所述:
  1. 使用 DECLARE 可为 INSERT 语句定义一个 Insert 游标。
  2. 使用 OPEN 语句打开游标。数据库服务器会在内存中创建缓冲区。并将游标的位置确定在插入缓冲区的第一行。
  3. 使用 PUT 语句将连续的数据行复制到插入缓冲区。
  4. 数据库服务器只有在缓冲区满的时候才会将这些行写到磁盘。您可以在缓冲区还未满的时候使用 CLOSE 、FLUSH 或 COMMIT WORK 语句刷新缓冲区。该主题会在 PUT 和 CLOSE 语句下做进一步讨论。
  5. 当不再需要 Insert 游标时使用 CLOSE 语句关闭游标。您必须在查询结束之前关闭Insert 游标,从而将任何已缓冲的行插入数据库。如果没有正确关闭游标,则会丢失数据。
  6. 使用 FREE 语句释放游标。FREE 语句会释放为 Insert 游标分配的资源。

使用 Insert 游标比直接嵌入 INSERT 语句更有效。此进程减少了程序和数据库服务器之间的通信,也加快了插入的速度。

Insert 游标还具有顺序游标特征。要创建 Insert 游标,可将一个顺序游标与 INSERT 语句额限制格式相关联。(有关更多信息,请参阅 Insert 语句。)以下示例包含声明顺序 Insert 游标的 GBase 8s ESQL/C 代码:
EXEC SQL declare ins_cur cursor for
                        insert into stock values
                        (:stock_no,:manu_code,:descr,:u_price,:unit,:u_desc);