在 INSERT 中命名程序变量

当您将 INSERT 语句与游标(在 DECLARE 语句中)相关联时,请创建 Insert 游标。在 INSERT 语句中,您可在 VALUES 子句中命名程序变量。当执行每一 PUT 语句时,使用那个时刻的程序变量的内容来填写插入到缓冲区内的行。

如果您正在(随同 INSERT 使用 DECLARE)创建 Insert 游标,则必须在该 VALUES 子句中仅使用程序变量。在准备好的语句的上下文中不识别变量名称;您通过其语句标识符将准备好的语句与游标关联。

下列 GBase 8s ESQL/C 示例展示 Insert 游标的使用。代码包括下列语句:
int keep_going = 1;
EXEC SQL BEGIN DECLARE SECTION
   struct cust_row { /* fields of a row of customer table */ } cust_rec;
EXEC SQL END DECLARE SECTION
EXEC SQL declare ins_curs cursor for
      insert into customer values (:cust_row);
EXEC SQL open ins_curs;
while ( (sqlca.sqlcode == 0) && (keep_going) )

   
  {
keep_going = get_user_input(cust_rec); /* ask user for new customer */
   if (keep_going )                       /* user did supply customer info
*/
      {
      cust_rec.customer_num = 0;          /* request new serial value */
      EXEC SQL put ins_curs;
      }
   if (sqlca.sqlcode == 0)                /* no error from PUT */
      keep_going = (prompt_for_y_or_n("another new customer") =='Y')
   }
EXEC SQL close ins_curs;

如果插入的数据可能为 NULL ,则请使用指示符变量。