oracle pl/sql之使用游标变量更新数据库
2015-10-22 15:16
585 查看
前情提要:
使用游标或游标变量不但能够对数据进行查询,同样也可以对数据进行更新。使用游标对数据进行更新是指在游标定位下,修改或删除表中指定的数据行。为了实现使用游标更新数据,需要在声明游标的时候使用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 my_cursor is select * from emp for update of sal nowait;
v_sal pls_integer;
begin
for r in my_cursor loop
if r.sal<3000 then
update emp set sal=sal+200 where current of my_cursor;
end if;
end loop;
end;
使用游标或游标变量不但能够对数据进行查询,同样也可以对数据进行更新。使用游标对数据进行更新是指在游标定位下,修改或删除表中指定的数据行。为了实现使用游标更新数据,需要在声明游标的时候使用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 my_cursor is select * from emp for update of sal nowait;
v_sal pls_integer;
begin
for r in my_cursor loop
if r.sal<3000 then
update emp set sal=sal+200 where current of my_cursor;
end if;
end loop;
end;
相关文章推荐
- OCI调用oracle入门程序
- Oracle常用的OCI函数
- oracle利用分隔符,组合查询想表达的任何话
- oracle利用分隔符,组合查询想表达的任何话
- oracle pl/sql之sql中的case语句
- oracle日期时间型timestamp的深入理解
- oracle日期时间型timestamp的深入理解
- Oracle常见SQL语句
- ORACLE 用SQL同一列的多行记录拼接成一个字符串
- 利用DB Link搞定Oracle两个数据库间的表同步
- ORACLE 多表关联 UPDATE 语句
- 如何给第三方人员提供oracle接口
- 如何给第三方人员提供oracle接口
- Oracle Split
- oracle 注入整理
- oracle hanganalyze工具的使用
- ORACLE SEQUENCE
- Oracle PLSQL Procedure 如何进行性能调优分析
- Oracle 监听(Listener) 中 services 说明
- Ubuntu14 安装Oracle 11g