游标
2015-07-08 20:52
211 查看
1.隐式游标:用户不用定义,就可以直接使用的游标,名称叫SQL
2.显示的游标:用户自定义的游标
1)静态的游标:
declare
--1.声明静态的游标,为查询stud表
cursor mycur is select id,name,age from from stud;
--定义一个变量,用于每次从游标中获取三个值
v_stud stud%rowType;
begin
--2.打开游标
open mycur;
--遍历游标获取数据
loop
fetch mycur into v_stud;
--如果里面没有获取到数据则退出loop
exit when mycur%notfound;
--如果有数据就显示
dbms_output.put_line('id is' || v_stud.id || 'name is:' || v_stud.name);
end loop;
--关闭游标
close mycur;
--保证游标一定要关闭
exception
when others then
if mycur%isopen then
close mycur;
end if;
end;
2)接受参数的游标
declare
--1.声明静态的游标为查询stud表
cursor mycur(p_id int) is select id,name,age from stud where id > p_id;
v_stud stud%rowType;
begin
--2.打开游标
open mycur(&id);
--3.遍历游标获取数据
loop
fetch mycur into v_stud;
--如果没有获取到数据,就退出loop
exit when mycur%notfound;
--如果有就显示数据,
dbms_output.put_line('id is:'||v_stud.id||'name is '|| v_stud.name);
end loop;
--4.关闭游标
close mycur;
exception
when others then
if mycur%isopen then
close mycur;
end if;
end;
3)动态的游标:
declare
--先定义一个动态的游标的数据类型
--相当于java -- class Person()
TYPE cur IS REF CURSOR;
--定义一个自己的类型的变量
mycur cur; --Person mycur
--定义一个变量用于获取值
v_stud stud%rowType;
begin
--打开游标,设置打开的字符串
--查询语句
open mycur for 'select id,name,age from stud';
loop
fetch mycur into v_stud;
exit when mycur%notfound;
dbms_output.put_line('id is:'||v_stud.id||' '||v_stud.name);
end loop;
close mycur;
end;
2.显示的游标:用户自定义的游标
1)静态的游标:
declare
--1.声明静态的游标,为查询stud表
cursor mycur is select id,name,age from from stud;
--定义一个变量,用于每次从游标中获取三个值
v_stud stud%rowType;
begin
--2.打开游标
open mycur;
--遍历游标获取数据
loop
fetch mycur into v_stud;
--如果里面没有获取到数据则退出loop
exit when mycur%notfound;
--如果有数据就显示
dbms_output.put_line('id is' || v_stud.id || 'name is:' || v_stud.name);
end loop;
--关闭游标
close mycur;
--保证游标一定要关闭
exception
when others then
if mycur%isopen then
close mycur;
end if;
end;
2)接受参数的游标
declare
--1.声明静态的游标为查询stud表
cursor mycur(p_id int) is select id,name,age from stud where id > p_id;
v_stud stud%rowType;
begin
--2.打开游标
open mycur(&id);
--3.遍历游标获取数据
loop
fetch mycur into v_stud;
--如果没有获取到数据,就退出loop
exit when mycur%notfound;
--如果有就显示数据,
dbms_output.put_line('id is:'||v_stud.id||'name is '|| v_stud.name);
end loop;
--4.关闭游标
close mycur;
exception
when others then
if mycur%isopen then
close mycur;
end if;
end;
3)动态的游标:
declare
--先定义一个动态的游标的数据类型
--相当于java -- class Person()
TYPE cur IS REF CURSOR;
--定义一个自己的类型的变量
mycur cur; --Person mycur
--定义一个变量用于获取值
v_stud stud%rowType;
begin
--打开游标,设置打开的字符串
--查询语句
open mycur for 'select id,name,age from stud';
loop
fetch mycur into v_stud;
exit when mycur%notfound;
dbms_output.put_line('id is:'||v_stud.id||' '||v_stud.name);
end loop;
close mycur;
end;
相关文章推荐
- Intent
- 【剑指offer】题目38 数字在排序数组中出现的次数
- 如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置
- HAproxy+keepalived+mysql高可用性Linux系统集群
- Unity 脚步 事件函数 的执行顺序
- Objective-C中的Block
- ACM--搬寝室
- freemarker XMLGregorianCalendar 转日期
- 2015湖南省队集训DAY6——B题(BZOJ4179)
- 名字的漂亮度
- Android入门(36)——第十三章 使用Gallery和ImageSwitcher制作图片浏览器
- Android java.io.NotSerializableException 错误
- 简单算法学习之快速排序详解
- oc 中四种实例变量的范围类型@private@protected@public@package
- 输入一段英文文本,用程序统计出现频率最高和最低的两个单词;
- 完全卸载干净Oracle11g
- [驱动] Framebuffer原理、使用、测试系列文章
- Project Euler:Problem 58 Spiral primes
- D3D粒子系统设计关键要点
- 字符串数字验证(算法)