一。游标的使用:
1.游标的概念
--游表的概念 --游标是Oracle系统在内存中开发的一个工作区,在其中存放select查询语句返回的查询集; --在游标所定义的工作区中,存放着一个指针(pointer),在初始状态它指向查询的首记录,当指针放置在某行后,即对该行数据进行操作; --游标分为两类: --隐式游标 --显示游标: --普通游标(静态游标) --引用游标(动态游标) --带有参数 --使用游标的5个步骤: --声明一个变量,用来保存记录的列值; --声明游标,并指定查询 --打开游标 --一次从游标中获取一个记录。 --关闭游标
--游标的分类:
--游标分为两大类:显示游标
隐式游标
其中显示游标又分为三种:
1.普通游标
2.动态游标
3.带有参数的游标
2.普通游标的定义及执行结果
--普通游标: --声明一些变量,用来保存记录的列值 declare empTile emp%rowtype; --声明游标,并指定查询 cursor cur is select * from emp where sal>2000; begin --打开游标 open cur; --一次从游标中获取一个记录。 loop fetch cur into empTile; exit when cur%notfound; s(empTile.ename || empTile.sal); end loop; --关闭游标 close cur; end;
执行结果如下:
3.动态游标的使用
--动态游标 declare myjob varchar2(20):='&请输入你的职位'; empTemp emp%rowtype; --1.声明一些变量,用来保存行的值 cur sys_refcursor; --2.声明游标 mysql varchar2(50); begin mysql:='select * from emp'; if(myjob is not null) then mysql:=mysql || ' where job=''' || myjob || ''''; --此处的‘‘’ 表示两个转译字符,两个单引转译一个单引 end if; s(mysql); open cur for mysql; --打开游标 loop fetch cur into empTemp; --4.抓取一行数据到记录类型,只有fetch 之后,%notfound才被赋予值 exit when cur%notfound; dbms_output.put_line(empTemp.ename || empTemp.sal); end loop; close cur; --5.关闭游标 end;
输入要查询的工作职位:
点击ok查看执行结果: