当您将 INSERT 语句与游标(在 DECLARE 语句中)相关联时,请创建 Insert 游标。在 INSERT 语句中,您可在 VALUES 子句中命名程序变量。当执行每一 PUT 语句时,使用那个时刻的程序变量的内容来填写插入到缓冲区内的行。
如果您正在(随同 INSERT 使用 DECLARE)创建 Insert 游标,则必须在该 VALUES 子句中仅使用程序变量。在准备好的语句的上下文中不识别变量名称;您通过其语句标识符将准备好的语句与游标关联。
VALUES 子句指定名为 cust_rec 的数据结构;GBase 8s ESQL/C 预处理器将 cust_rec 转化为值的列表,每一结构的组件一个。
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 ,则请使用指示符变量。