更新游标允许您删除或更新当前行;即,最近访存的行。使用 GBase 8s ESQL/C 编写的下 列示例展示更新游标的声明: EXEC SQL DECLARE names CURSOR FOR SELECT fname, lname, company FROM customer FOR UPDATE; 使用此游标的程序可以常规的方法访存行。 EXEC SQL FETCH names INTO :FNAME, :LNAME, :COMPANY; 如果该程序然后决定需要修改该行,则它可这么做。 if (strcmp(COMPANY, "SONY") ==0) { EXEC SQL UPDATE customer SET fname = 'Midori', lname = 'Tokugawa' WHERE CURRENT OF names; } 关键字 CURRENT OF names 替代 WHERE 子句中的常规测试表达式。在其他方面, UPDATE 语句保持不变, 即使包括表名称的规范, 在游标名称中其为隐式的, 但仍然需要。
更新特定的列 下列示例已更新了前面的更新游标示例的特定的列: EXEC SQL DECLARE names CURSOR FOR SELECT fname, lname, company, phone INTO :FNAME,:LNAME,:COMPANY,:PHONE FROM customer FOR UPDATE OF fname, lname END-EXEC. 仅可通过此游标更新 fname 和 lname 列。作为错误拒绝如下语句: EXEC SQL UPDATE customer SET company = 'Siemens' WHERE CURRENT OF names END-EXEC. 如果程序尝试这样的更新,则返回错误代码且不发生更新。由于删除影响所有列,因此, 也拒绝使用 WHERE CURRENT OF 的删除尝试。