Oracle 游标的where current of子句_current of oracle_ETIpiero的博客-程序员秘密

技术标签: 数据库  

游标中的更新和删除
  在PL/SQL中依然可以使用UPDATE和DELETE语句更新或删除数据行。显式游标只有在需要获得多行数据的情况下使用。PL/SQL提供了仅仅使用游标就可以执行删除或更新记录的方法。
  UPDATE或DELETE语句中的WHERE CURRENT OF子串专门处理要执行UPDATE或DELETE操作的表中取出的最近的数据。要使用这个方法,在声明游标时必须使用FOR UPDATE子串,当对话使用FOR UPDATE子串打开一个游标时,所有返回集中的数据行都将处于行级(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

--------------------------------------------------------------------------------------------------
通过从游标工作区中抽取出来的数据,可以对数据库中的数据进行操纵,包括修改与删除操作。
要想通过游标操纵数据库,在定义游标的时候,必须加上FOR UPDATE OF子句;       
而且在UPDATE或DELETE时,必须加上WHERE CURRENT OF子句,则游标所在行被更新或者删除。
一个FOR UPDATE子句将使所在行获得一个行级排他锁。
 


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ETIpiero/article/details/9156393

智能推荐

自然语言处理(NLP)相关资料汇总_自然语言处理汇总_LeeTioN的博客-程序员秘密

自然语言处理怎么最快入门? - 刘知远的回答 - 知乎 https://www.zhihu.com/question/19895141/answer/24710071 刘老师主要是从ACL等著名NLP相关会议的角度来介绍如何跟进NLP领域的研究...

su root 报错:linux新装系统无法进入root账户_linux 无法进入root_厚德载物cet的博客-程序员秘密

新手在学习ubuntu时,在终端下用su命令切换到root用户时会有 Authentication failure( 认证失败)的提示,根本原因是root用户没有被创建。首先用快捷键crtl+alt+T 打开终端,显示的是用户名@电脑名:~,符号,符号,符号就表示现在处于普通用户权限。然后输入:sudo passwd root终端会显示: Enter new UNIX passwor...

JAVA多线程解析_wszhlzjl的博客-程序员秘密

线程(英语:Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(Lightweight Processes),但轻量进程更多指内核线程(Kernel Thread),而把用户线程(User Thre...

Android7.0 安装apk更新包的适配_YOUNGEER1的博客-程序员秘密

项目中发现在自动更新功能的时候,下载好了apk的文件后在android7.0系统中不能自动跳到安装界面,后来百度了一番解决了问题。原因:我们先来看看产生的原因:当我们在7.0上使用系统服务去下载apk并且试图安装时,有可能由于权限问题导致安装失败。 每个Android版本的发布,对于安全性问题的要求越来越高,也为Android程序员增加了额外的工作量。Android6.0引入动态权限控制(Run

随便推点

程序员一生_weixin_34195142的博客-程序员秘密

35岁 你因为身体越来越差加班越来越少晋升的速度也越来越缓慢那天下班,媳妇告诉你孩子要上幼儿园了双语的一个月3000你皱了皱眉头,那边就已经不耐烦了“四单元的老王家孩子,一个月6000”“你已经这样了,你想让孩子也输?”你没说话,回屋给媳妇转了6000块钱这笔钱,你原本打算给自己过个生日,买个新电脑38岁,孩子上了一年级老师说一年级最关键,打好基础很...

通俗易懂的 TCP 拥塞控制_TanaStudy的博客-程序员秘密

什么是拥塞控制在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。拥塞控制就是为了防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制和流量控制的区别:拥塞控制是一个全局性的过程,涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制往往是点对点通信量的控制,是个端到端的问题。流量控制所要做到的就是抑制发送端发送数据的速率,以便使接

做出一个SwitchButton的效果,并详细学习一下onDraw(Canvas canvas)方法的使用_非著名程序员的博客-程序员秘密

代码的灵感和原理主要来自于android自定义开关控件-SlideSwitchhttp://blog.csdn.net/singwhatiwanna/article/details/9254309这篇文章!1.效果iphone上有开关控件,很漂亮,其实android4.0以后也有switch控件,但是只能用在4.0以后的系统中,这就失去了其使用价值,而且我觉得它的界面也不是很好看。最近

oracle 11g回闪功能,Oracle 11G 闪来技术 使用Oracle闪回查询_美猫的奇妙世界的博客-程序员秘密

使用带有AS OF子句的SELECT语句进行闪回查询。闪回查询获取之前的时间点的数据。语句通过时间戳或SCN显示地引用过去的时间。返回在那个时间点当时已经提交的数据。闪回查询的使用包括:1. 恢复丢失的数据、撤销不正确的且已经提交的改变。例如,如果你错误地删除或更新了行并且提交了,可以立即撤销这个错误。2. 比较当前的数据和早些时候的数据。例如,可以运行一个日报表,来显示数据从昨天到今天的变化。可...

ReactNative 自定义标题栏 ReactNative 自定义导航栏_react native 自定义标题栏___卓原的博客-程序员秘密

先上代码,配合代码讲解一下使用方法, 我这有用到一个屏幕适配工具类,自己写的,使用方法和代码 请点这里/** * Created by 卓原 on 2018/6/16. * */import React from 'react';import { Text, StyleSheet, View, TouchableOpacity, Image...

推荐文章

热门文章

相关标签