设为首页 加入收藏

TOP

OraclePL/SQL语句基础笔记(下)(二)
2015-11-21 02:08:38 来源: 作者: 【 】 浏览:4
Tags:OraclePL/SQL 语句 基础 笔记
; //退出条件 dbms_output.put_line(emp_row.ename); //输出结果 end loop; //退出循环 close ecname; //关闭游标变量 dbms_output.put_line('结束'); end; /

开始
MILLER
结束

//复杂的案例 SQL> declare type emp_cname is ref cursor return emp%rowtype; ecname emp_cname; emp_row emp%rowtype; begin dbms_output.put_line('开始'); open ecname for select * from emp; loop fetch ecname into emp_row; exit when ecname%notfound; dbms_output.put_line(emp_row.ename); end loop; close ecname; dbms_output.put_line('结束'); end; / 

开始
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
结束

使用游标更新数据库

定位游标之后进行删除|修改指定的数据行 更新的时候需要使用for update选项。

Cursor cursor_name is select_statement; For update[of column[,column],[nowait]]

of用来指定要锁定的列,如果忽略of那么表中选择的数据行都将锁定。如果被锁定行已经被锁定了,那么必须等待释放才能锁定对于这种情况我们可以使用nowait语句。

当使用for update语句声明游标后,可以再delete|update语句中使用where current of子句,修改|删除游标结果集中当前行对应的表中的数据。

语法:

where { current of cursor_name|search_condition}

举例说明:

//修改操作 SQL> declare cursor ecname is select * from emp where empno=7934 for update of sal nowait; esal number(7,2); begin dbms_output.put_line('开始'); for r in ecname loop esal:=r.sal*10; update emp set sal=esal where current of ecname; end loop; dbms_output.put_line('结束'); end; / 

开始
结束

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇windows下的oracledatabase实例无.. 下一篇ORA-00918columnambiguouslydefin..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: