您的位置:首页 > 数据库 > Oracle

oracle10g- oracle 关于集合数据的处理 cursor 游标

2010-09-30 09:52 316 查看
pl sql 高级应用游标的设计与开发什么是游标为什么用游标怎么样使用游标存储过程的创建参数的使用存储过程的调用包的设计与应用什么是包 包的创建与使用

游标是一种plsql控制结构 可以对sql语句的处理进行显示的控制便于对表的行数据进行逐条的处理游标分为显式和隐式两种情况游标的属性%found %isopen %notfound %rowcount
例子--*******************declare cursor mycur is select * from t1;myrec t1%rowtype;beginopen mycur;//打开fetch mycur into myrec;whie mycur%found loopdbms_output.put_line(myrec.id||myrec.name);fetch mycur into myrec;//记录去获取下一个记录end loop;close mycur;//要关闭end;/--*******************带参数的游标declare cursor mycur(did number) is select name from t1 where id=did; dname t1.name%type;beginopen mycur(1);//打开关传入参数
loopfetch mycur into dname;dbms_output.put_line(dname);exit while mycur%notfound;end loop;close mycur;//要关闭end;/--***********加强的for循环//不用打开和关闭 declare Cursor mycur (did number) isselect name from t1 where id=did;begindbms_output.put_line('*****结果集为*****');for c in mycur(8) loopdbms_output.put_line(c.name);end loop;end;/--************************declare cursor mycur(did number) is select name from t1 where id=did; dname t1.name%type;beginopen mycur(1);//打开关传入参数if mycur%isopen thendbms_output.put_line('游标已经打开了');elseopen mycur(1);end if;loopfetch mycur into dname;dbms_output.put_line(dname);exit while mycur%notfound;end loop;close mycur;//要关闭end;/--*******
declare tname varchar2(10);cursor mycur isselect * from t1;beginopen mycur;loopfetch mycur into dname;exit when mycur%notfound or mycur%notfound is null;dbms_output.put_line('共有多少行:'||mycur%rowcount);end loop;end;/--*******;用游标来修改数据declare cursor mycur isselect name from t1 for update;//一定要用for update 否则不允许更新的dname varchar2(10);beginopen mycur;fetch mycur into dname ;while mycur%found loopupdate name set name=name||'_name' where current of mycur;//一定要用current of mycurfetch mycur into dname;end loop;end;/--***********隐式游标
begin for cur in (select name from t1) loopdbms_output.put_line(cur.name);end loop;end;/不用打开和关闭
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐