当您将 INSERT 语句与一个游标相关联的时候,该游标称为 Insert 游标。Insert 游标是一个数据结构,它代表 INSERT 语句将要添加到数据库的行。INSERT
游标简单地插入数据行;它不可以用于取得数据。要创建 Insert 游标,应将一个游标与 INSERT 语句的限制格式相关联。INSERT 语句必须包括 VALUES
子句;它不可以包含嵌入的 SELECT 语句。
如果想要在 INSERT 操作中将多个行添加到数据库,应创建一个 Insert 游标。Insert 游标允许将大量的插入数据缓存到内存中,并在缓冲区满的时候写入磁盘,具体如以下这些步骤所述:
- 使用 DECLARE 可为 INSERT 语句定义一个 Insert 游标。
- 使用 OPEN 语句打开游标。数据库服务器会在内存中创建缓冲区。并将游标的位置确定在插入缓冲区的第一行。
- 使用 PUT 语句将连续的数据行复制到插入缓冲区。
- 数据库服务器只有在缓冲区满的时候才会将这些行写到磁盘。您可以在缓冲区还未满的时候使用 CLOSE 、FLUSH 或 COMMIT WORK 语句刷新缓冲区。该主题会在
PUT 和 CLOSE 语句下做进一步讨论。
- 当不再需要 Insert 游标时使用 CLOSE 语句关闭游标。您必须在查询结束之前关闭Insert
游标,从而将任何已缓冲的行插入数据库。如果没有正确关闭游标,则会丢失数据。
- 使用 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);