--1、使用游标更新数据
1.declare 2.cursor emp_cursor is 3.--加行共享锁 4.select t.name,t.english_name from communitytype t for update; 5.--定义变量 6.v_name communitytype.name%type; 7.v_enname communitytype.english_name%type; 8.begin 9.--打开游标 10.open emp_cursor; 11.loop 12.fetch emp_cursor into v_name,v_enname; 13.exit when emp_cursor%notfound; 14.if v_name = '电子图书' then 15.update communitytype c 16.set c.english_name = 'ebook' 17.where current of emp_cursor; 18.end if; 19.end loop; 20.close emp_cursor; 21.commit; 22.end;
--2、使用游标删除数据,同上只需要将更新语句换成删除语句
--3、使用of子句在特定表上加行共享锁
1.declare 2.cursor emp_cursor is 3.--加行共享锁 4.select t.name,t.english_name from communitytype t for update of t.name; 5.--定义基于游标的记录变量 6.emp_record emp_cursor%rowtype; 7.begin 8.--打开游标 9.open emp_cursor; 10.loop 11.fetch emp_cursor into emp_record; 12.exit when emp_cursor%notfound; 13.if emp_record.name = '电子图书' then 14.update communitytype c 15.set c.english_name = 'ebook' 16.where current of emp_cursor; 17.end if; 18.end loop; 19.close emp_cursor; 20.commit; 21.end;
--4、默认情况下当前会话要一直等待对方释放锁,使用nowait子句可以避免等待锁
1.declare 2.cursor emp_cursor is 3.--加行共享锁 4.select t.name,t.english_name from communitytype t for update nowait; 5.--定义基于游标的记录变量 6.emp_record emp_cursor%rowtype; 7.begin 8.--打开游标 9.open emp_cursor; 10.loop 11.fetch emp_cursor into emp_record; 12.exit when emp_cursor%notfound; 13.if emp_record.name = '电子图书' then 14.update communitytype c 15.set c.english_name = 'ebook' 16.where current of emp_cursor; 17.end if; 18.end loop; 19.close emp_cursor; 20.commit; 21.end;
【转载地址】http://zheng12tian.iteye.com/blog/815770