Oracle学习笔记6
2015-08-28 00:00
661 查看
一. 游标
1) --do while 循环
Declare
Cursor c is select * from emp;
V_emp c%rowtype;
Begin
Open c;
loop
Fetch c into v_emp;
Exit when (c%notfound);
Dbms_output.put_line(v_emp.ename);
End loop;
Close c;
End;
2) --while 循环
Declare
Cursor c is select * from emp;
V_emp c%rowtype;
Begin
Open c;
Fetch c into v_emp;
While (c%found) loop
Dbms_output.put_line(v_emp.ename);
Fetch c into v_emp;
End loop;
Close c;
End;
3) --for 循环(推荐)
Declare
Cursor c is select * from emp;
Begin
For v_emp in c loop
Dbms_output.put_line(v_emp.ename);
End loop;
End;
4) -- 带参数的游标
Declare
Cursor c(v_deptno emp.deptno%type, v_job emp.job%type) is
select ename, sal from emp where deptno = v_deptno and job = v_job;
Begin
For v_temp in c(30, ‘clerk’) loop
Dbms_output.put_line(v_temp.ename);
End loop;
End;
5) -- 可更新的游标
Declare
Cursor c is
Select * from emp for update ;
Begin
For v_temp in c loop
If(v_temp.sal < 2000) then
Update emp set sal = sal * 2 where current of c ;
Elsif (v_temp.sal = 5000) then
Delete from emp where current of c;
End if;
End loop;
Commit;
End;
版权声明:本文为博主原创文章,未经博主允许不得转载。
1) --do while 循环
Declare
Cursor c is select * from emp;
V_emp c%rowtype;
Begin
Open c;
loop
Fetch c into v_emp;
Exit when (c%notfound);
Dbms_output.put_line(v_emp.ename);
End loop;
Close c;
End;
2) --while 循环
Declare
Cursor c is select * from emp;
V_emp c%rowtype;
Begin
Open c;
Fetch c into v_emp;
While (c%found) loop
Dbms_output.put_line(v_emp.ename);
Fetch c into v_emp;
End loop;
Close c;
End;
3) --for 循环(推荐)
Declare
Cursor c is select * from emp;
Begin
For v_emp in c loop
Dbms_output.put_line(v_emp.ename);
End loop;
End;
4) -- 带参数的游标
Declare
Cursor c(v_deptno emp.deptno%type, v_job emp.job%type) is
select ename, sal from emp where deptno = v_deptno and job = v_job;
Begin
For v_temp in c(30, ‘clerk’) loop
Dbms_output.put_line(v_temp.ename);
End loop;
End;
5) -- 可更新的游标
Declare
Cursor c is
Select * from emp for update ;
Begin
For v_temp in c loop
If(v_temp.sal < 2000) then
Update emp set sal = sal * 2 where current of c ;
Elsif (v_temp.sal = 5000) then
Delete from emp where current of c;
End if;
End loop;
Commit;
End;
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- Oracle 10g R2不能使用EM的问题
- 表空间操作
- PreparedStatement中in子句的处理
- VMware下RedHat4.8_64位安装Oracle 10g RAC--简略脚本
- oracle sql日期比较
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- OS block size和Oracle block size,查找OS Blocksize的方法
- oracle中创建数据库和表空间的几点总结
- 数据库自动备份脚本
- Linux C函数参考手册(PDF版)
- oracle的nvl函数的使用介绍
- 解决oracle用户连接失败的解决方法
- oracle的一些tips技巧
- Oracle 下的开发日积月累
- Oracle存储过程之数据库中获取数据实例
- Windows下ORACLE 10g完全卸载的方法分析