使用游标来插入

前面示例中的代码(声明插入游标)为使用准备插入游标。如下例所示,接下来演示如何使用该游标。为了简化起见,此示例假设名为 next_cust 的函数或者返回关于新客户的信息,或者返回空数据来标志输入的结束。
EXEC SQL BEGIN WORK;
          EXEC SQL OPEN new_custs;
          while(SQLCODE == 0)
          {
          next_cust();
          if(the_company == NULL)
          break;
          EXEC SQL PUT new_custs;
          }
          if(SQLCODE == 0)                    /* 如果 PUT 没有问题 */
          {
          EXEC SQL FLUSH new_custs;        /* 写留下的任何行 */
          if(SQLCODE == 0)                 /* 如果 FLUSH 没有问题 */
          EXEC SQL COMMIT WORK;         /* 提交更改 */
          }
          else
          EXEC SQL ROLLBACK WORK;          /* 否则,取消更改 */

此示例中的代码反复地调用 next_cust,当它返回非空数据时,PUT 语句将返回的数据发送到该行缓冲区。当缓冲区填满时,自动地将它包含的行发送到数据库服务器。当 next_cust 没有更多数据返回时,该循环正常结束。然后,FLUSH 语句写入缓冲区中余下的任何行,之后,事务终止。

重新检查关于 INSERT 语句的信息。请参阅 INSERT 语句。该语句本身不是游标定义的一部分,它将单个行插入到 customer 表内。实际上,可从示例代码删除整个插入游标的装置,且可将 INSERT 语句写到 PUT 语句正所在的位置。不同之处在于,插入游标导致程序运行得更快些。