oracle中游标的用法总结及示例
来源:互联网 发布:win7旗舰版优化 编辑:程序博客网 时间:2024/06/07 23:32
游标
游标的作用:一般用来遍历结果集。
declare
--定义游标
cursor c is
select * from emp;
--定义游标类型变量
v_temp c%rowtype;
begin
--打开游标
open c;
--拿出一个值赋值给v_temp
fetch c into v_temp;
dbms_output.put_line(v_temp.ename);
close c;
end;
------------------
declare
cursor c is
select * from emp;
v_emp c%rowtype;
begin
open c;
loop
fetch c into v_emp;
--c%notfound没有找到记录
exit when (c%notfound);
dbms_output.put_line(v_emp.ename);
end loop;
close c;
end;
----------------------
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;
-----------------
declare
cursor c is
select * from emp;
begin
for v_emp in c loop
dbms_output.put_line(v_emp.ename);
end loop;
end;
游标的作用:一般用来遍历结果集。
带参数的游标
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;
可更新的游标
declare
cursor c
is
select * from emp2 for update;
begin
for v_temp in c loop
if (v_temp.sal < 2000) then
update emp2 set sal = sal * 2 where current of c;
elsif (v_temp.sal = 5000) then
delete from emp2 where current of c;
end if;
end loop;
commit;
end;
示例:
--1、通过使用游标来显示dept表中的部门名称,及其相应的员工列表(提示:定义两个游标,可以使用双重循环)。
declare
num dept.deptno%type:=#--定义num变量
cursor dept_cursor is select dname from dept where deptno=num;
--定义带参数的游标,参数的类型由type前dept.deptno的类型决定
cursor emp_cursor (v_deptno dept.deptno%type)
is
select * from emp where deptno = v_deptno;
begin
for v_temp in dept_cursor loop
dbms_output.put_line('部门名称:'||' '||v_temp.dname);
end loop;
for v_temp in emp_cursor(num) loop
dbms_output.put_line(v_temp.empno||' '||v_temp.ename||' '||v_temp.job||' '
||v_temp.mgr||' '||v_temp.hiredate||' '||v_temp.sal||' '||v_temp.comm||' '||v_temp.deptno);
end loop;
end;
/
--2、emp表中对所有雇员按他们基本薪水的10%给他们加薪,如果所增加后的薪水大于5000,则取消加薪。
declare
cursor emp_cursor
is
select * from emp;
begin
for v_temp in emp_cursor loop
if(v_temp.sal*1.1<5000)then
dbms_output.put_line(v_temp.empno||' '||v_temp.ename||' '||v_temp.job||' '
||v_temp.mgr||' '||v_temp.hiredate||' '||v_temp.sal*1.1||' '||v_temp.comm||' '||v_temp.deptno);
else
dbms_output.put_line(v_temp.empno||' '||v_temp.ename||' '||v_temp.job||' '
||v_temp.mgr||' '||v_temp.hiredate||' '||v_temp.sal||' '||v_temp.comm||' '||v_temp.deptno);
end if;
end loop;
end;
/
- oracle中游标的用法总结及示例
- oracle中游标的使用,示例
- Sqlserver中游标的用法
- ORACLE 中游标的使用
- ORACLE中游标的使用方法
- oracle中游标的使用
- oracle中游标的使用
- Oracle 中游标的使用
- Oracle中游标的使用
- oracle中游标的使用
- oracle中游标的使用
- oracle中游标的使用案例
- Oracle数据库中游标的使用
- 详解ORACLE中游标的生命周期
- PROC--oracle中游标的使用
- oracle数据库中游标的应用
- Sql Server 2000 中游标的使用示例
- Sql Server 2000 中游标的使用示例
- Nginx使用说明以及注意事项
- 六、vault
- 第六章 样本和抽样分布
- RubyMine注册码
- node入门(六)
- oracle中游标的用法总结及示例
- jni开发中遇到的问题3:Caused by: java.lang.UnsatisfiedLinkError: Native method not found
- I
- 最小路径覆盖,最小点覆盖,最大独立点集 【概念】
- 七、vault
- Checking standard output of PBS jobs in real time
- React组件性能优化
- 前端跨域
- 《UNIX网络编程 卷1》 笔记: readline函数 (不可重入版本)