以下的文章主要是介绍Oracle游标的删除与更新,我们都知道在PL/SQL中是可以使用UPDATE与DELETE语句来更新或者删除相关的数据行。显式Oracle游标只有在需要获得多行数据的情况下使用。
成都创新互联是专业的宁化网站建设公司,宁化接单;提供做网站、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行宁化网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
PL/SQL提供了仅仅使用Oracle游标就可以执行删除或更新记录的方法。
UPDATE或DELETE语句中的WHERE CURRENT OF子串专门处理要执行UPDATE或DELETE操作的表中取出的最近的数据。
要使用这个方法,在声明游标时必须使用FOR UPDATE子串,当对话使用FOR UPDATE子串打开一个Oracle游标时,所有返回集中的数据行都将处于行级(ROW-LEVEL)独占式锁定,其他对象只能查询这些数据行,不能进行UPDATE、DELETE或SELECT...FOR UPDATE操作。
语法:
- FOR UPDATE [OF [schema.]table.column[,[schema.]table.column]..
- [nowait]
在多表查询中,使用OF子句来锁定特定的表,如果忽略了OF子句,那么所有表中选择的数据行都将被锁定。如果这些数据行已经被其他会话锁定,那么正常情况下ORACLE将等待,直到数据行解锁。
在UPDATE和DELETE中使用WHERE CURRENT OF子串的语法如下:
- WHERE{CURRENT OF cursor_name|search_condition}
例:
- DELCARE
- CURSOR c1 IS SELECT empno,salary
- FROM emp
- WHERE comm IS NULL
- FOR UPDATE OF comm;
- v_comm NUMBER(10,2);
- BEGIN
- FOR r1 IN c1 LOOP
- IF r1.salary<500 THEN
- v_comm:=r1.salary*0.25;
- ELSEIF r1.salary<1000 THEN
- v_comm:=r1.salary*0.20;
- ELSEIF r1.salary<3000 THEN
- v_comm:=r1.salary*0.15;
- ELSE
- v_comm:=r1.salary*0.12;
- END IF;
- UPDATE emp;
- SET comm=v_comm
- WHERE CURRENT OF c1l;
- END LOOP;
- END
以上的相关内容就是对Oracle游标中的更新和删除的介绍,望你能有所收获。
文章出自: http://www.programbbs.com/doc/class10-3.htm
【编辑推荐】
标题名称:Oracle游标的删除与更新实际操作步骤
当前网址:http://www.gawzjz.com/qtweb/news19/193069.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联