Oracle/PLSQL WHERE CURRENT OF Statement

Oracle/PLSQL: WHERE CURRENT OF Statement

If you plan on updating or deleting records that have been referenced by a Select For Update statement, you can use the Where Current Of statement.

译:如果你想删除或者更新被Select For Update引用的记录,你可以使用Where Current Of语句。

The syntax for the Where Current Of statement is either:

UPDATE table_name
    SET set_clause
    WHERE CURRENT OF cursor_name;

OR

DELETE FROM table_name
WHERE CURRENT OF cursor_name;

The Where Current Of statement allows you to update or delete the record that was last fetched by the cursor.

译:Where Current Of语句允许你更新或者是删除最后由cursor取的记录。

Updating using the WHERE CURRENT OF Statement

Here is an example where we are updating records using the Where Current Of Statement:

译:下面一个使用Where Current Of更新记录的例子:

CREATE OR REPLACE Function FindCourse
   ( name_in IN varchar2 )
   RETURN number
IS
    cnumber number;

    CURSOR c1
    IS
       SELECT course_number, instructor
        from courses_tbl
        where course_name = name_in
        FOR UPDATE of instructor;

BEGIN

open c1;
fetch c1 into cnumber;

if c1%notfound then
     cnumber := 9999;

else
     UPDATE courses_tbl
        SET instructor = ‘SMITH‘
        WHERE CURRENT OF c1;

    COMMIT;

end if;

close c1;

RETURN cnumber;

END;

 

Deleting using the WHERE CURRENT OF Statement

Here is an example where we are deleting records using the Where Current Of Statement:

译:下面一个使用Where Current Of删除记录的例子:

CREATE OR REPLACE Function FindCourse
   ( name_in IN varchar2 )
   RETURN number
IS
    cnumber number;

    CURSOR c1
    IS
       SELECT course_number, instructor
        from courses_tbl
        where course_name = name_in
        FOR UPDATE of instructor;

BEGIN

open c1;
fetch c1 into cnumber;

if c1%notfound then
     cnumber := 9999;

else
     DELETE FROM courses_tbl
        WHERE CURRENT OF c1;

    COMMIT;

end if;

close c1;

RETURN cnumber;

END;

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

原文地址:https://www.cnblogs.com/skiwdhwhssh/p/10342264.html

时间: 01-30

Oracle/PLSQL WHERE CURRENT OF Statement的相关文章

Oracle&PLSQL 安装及乱码问题解决

1,先到Oracle网站下载Instant Client ,如果有老版本,就不用下载了 下载回是一个压缩文件,解压之后的文件夹叫:D:/instantclient_11_2.放在你喜欢的目录即可.例如:D:/instantclient_11_2 2. 2.在D:/instantclient_11_2目录下新建目录network,在network目录下再新建admin目录,在admin目录下新建文件tnsnames.ora,使用文本编辑器打开写入如下内容: MWDB=(DESCRIPTION = 

oracle Plsql 运行update或者delete时卡死问题解决的方法

oracle Plsql 运行update或者delete时 遇到过Plsql卡死问题或者导致代码运行sql的时候就卡死. 在开发中遇到此问题的时候,本来把sql复制出来,在plsql中运行,Sql本身拼写无误,可是出现plsql卡死的情况, 在代码中,运行sql的地方打断点debug,发现运行sql,仍然没有响应.经过网上查资料,推測导致这样的情况的原因是 可能在PLSQL Developer运行update时没有commit,oracle将该条记录锁住了. 能够通过下面办法解决: 先查询锁定

MyEclipse+Weblogic+Oracle+PLSQL配置注意事项

Weblogic配置详情:<Weblogic安装与配置图文详解>Oracle+PLSQL配置详情:<PL/SQL访问远程Oracle服务器(多种方式)>MyEclipse配置:<Eclipse在开发Web项目时的配置优化>,<教你破解MyEclipse到2016年[图文详解]>虽然总结过以上开发环境的配置及优化,但是在使用的过程中依旧出现了或多或少.大大小小的问题,统一记录一下.1.MyEclipse导入工程.File-->Import-->Ge

Oracle:impdp导入等待statement suspended, wait error to be cleared

用数据泵impdp往开发数据库导数据,但导入到INDEX时感觉卡住不动了 Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX ----查看状态,Completed Objects: 33一直没有变化. Import> status Job: SYS_IMPORT_FULL_01   Operation: IMPORT                            Mode: FULL                        

本地不安装Oracle,plsql远程连接数据库

由于Oracle的庞大,有时候我们需要在只安装Oracle客户端如plsql.toad等的情况下去连接远程数据库,可是没有安装Oracle就没有一切的配置文件去支持.最后终于发现一个很有效的方法,Oracle的Instantclient工具包可以很好地解决这个问题,而且小而方便.1.首先到Oracle网站下载Instant Client : http://www.oracle.com/us/solutions/index-097480.html 解压之后的文件夹叫:instantclient_1

[Oracle]Plsql连接Oracle

关于plsql连接的教程有很多,其中最重要的就是D:\oracle\product\10.2.0\db_1\network\ADMIN下的listener和tnsnames两个文件.经过反复修改与测试,终于成功了. Listener文件: # listener.ora Network Configuration File: d:\oracle\product\10.2.0\db_1\network\admin\listener.ora # Generated by Oracle configur

Oracle / PLSQL写语句 常用的几个函数

下面开始记录一下,自己在Oracle或者PLSQL常用的几个函数, 1add_months 增加或减去月份2. last_day(sysdate) 返回日期的最后一天3. months_between (date2,date1) 给出date2-date1的月份4. new_time (date,'this','that') 给出在this时区=other时区的日期和时间5. next_day (date,'day') 给出日期date和星期x之后计算下一个星期的日期6. sysdate 用来得

Oracle PLSQL:

PLSQL: 符号: 赋值: := 基本示例: set serveroutput on //设置输出打开. declare --说明部分 begin --程序 dbms_output.put_line('Hello World'); exception end; / 引用型变量: --查询7839的姓名和薪水 --查询7839的姓名和薪水 set serveroutput on declare --定义变量保存姓名和薪水 --pename varchar2(20); --psal number;

Oracle PLSQL Demo - 22.查看字符串的长度[lengthb, length],判断字符串是否包含中文

--Count the length of string select lengthb('select * from scott.emp') as countted_by_byte, length('select * from scott.emp') as countted_by_char from dual; --For some character encoding, the length() and the lengthb() is same in english --you may us

Oracle PLSQL Demo - 03.流程判断[IF ELEIF ELSE]

declare v_job varchar2(50) := 'Programmer'; v_sal number; begin if v_job = 'Programmer' then v_sal := 6000; elsif v_job = 'Senior Programmer' then v_sal := 8000; else v_sal := 10000; end if; dbms_output.put_line(v_sal); end;