Oracle pl/sql编程 16---游标变量使用游标更新数据库

来源:互联网 发布:出货数据怎么做模板 编辑:程序博客网 时间:2024/05/17 04:29

使用游标或游标变量不但能够对数据进行查询,同样也可以对数据进行更新。使用游标对数据进行更新是指在游标定位下,修改或删除表中指定的数据行。为了实现使用游标更新数据,需要在声明游标的时候使用FOU UPDATE,以便在打开游标时锁定游标结果集与表中对应数据行的所有列和部分列


为了保证正在进行操作的数据不被另外的用户修改,Oracle提供了一个for update选项来对所选择的行进行锁住。使用for update选项后声明游标的语法形式如下:


cursor cursr_name is select语句 for update[of column[,column]] [nowait]


其中,of子句用来指定要锁定的列,如果忽略了of子句,那么表中选择的数据行都将被锁定。如果这些数据行已经被其他用户锁定,那么正常情况下,for update操作会一直等到该用户释放对这些行的锁定后才继续自己的操作。对于这种情况,可使用nowait子句,这时,如果这些行被另一用户的操作锁定,则open 立即返回并给出错误提示。


当使用了 fou update声明游标后,可在delete和update语句中使用where current of子句,修改或删除游标结果集中当前行对应的表中的数据行

where{current of cursor_name|serarch_condition}


declare     cursor emp_cursor is select * from emp for update of sal nowait;     v_comm number;begin     for r in emp_cursor loop         if r.sal<3000 THEN         update emp  set sal=sal+100 where current of emp_cursor;         end if;     end loop;end;

注意:当在for update子句中使用current of 指定锁定的列后,程序块中的update语句只能更新of指定的列

0 0
原创粉丝点击