--游标类型:用来表示一个结果集(多条数据)的类型 1.隐式游标:指DBMS(如Oracle)在执行SELECT…into,delete,update,insert等语句时的SQL游标,它提供最近执行SQL语句的情况,一般用在delete,update语句后,用来查询最近的操作是否成功 任何一个DML语句执行的时候都会默认创建一个游标 这个游标的名字是SQL 隐式游标有四个属性可以使用: %found --执行的语句影响到了一行或者多行数据,就为true,否则为false %notfound --执行的语没有影响数据,就为true,否则为false %rowcount --获得执行语句影响到了多少行 %isopen --判断游标是否打开,隐式游标始终是false %前缀是SQL --练习:判断数据是否修改成功 begin update empbak set sal=10000 where empno=&no; if SQL%rowcount=0 then dbms_output.put_line('更新失败!!'); else dbms_output.put_line('更新成功!!'); end if; end; 2.显式游标:当一行查询结果超过时,用户就不能使用select into语句,此时就需要一个显式游标,声明、打开及管理都是需要程序员手动操作的,通常用来处理查询结果是多行或零行的情况。 oracle显式游标的属性: 属性名 返回值 Cursor_name%ISOPEN TURE:游标打开;FALSE:游标关闭 Cursor_name%FOUND TURE:最近一次提取数据成功;FALSE:最近一次提取数据失败 Cursor_name%NOTFOUND TURE:最近一次提取数据失败;FALSE:最近一次提取数据成功 Cursor_name%ROWCOUNT 最近一次提取的行的序号(即已经从游标中提取的记录行数) (1).声明:在declare部分使用 Cursor 游标名 is 查询语句; 注意:查询语句不能带into字句。 (2).打开:写在begin块中。 语法:open 游标名; 打开游标实际上就是相当于执行游标所对应的查询语句,并且把查询结果集放入内存中。 (3).提取数据:(写在begin块中) 语法:fecth 游标名 into 变量名列表|记录型变量; 该语句通常是放在一个循环中 (4).关闭游标: 语法:close 游标名; 相当于释放内存。 --练习:获取部门10的所有员工的姓名和工资 declare v_ename emp.ename%type; v_sal emp.sal%type; --定义显式游标,一定要绑定一个查询语句 --游标mc中装的是查询语句的结果集 cursor mc is select ename,sal from emp where deptno=10; begin --打开游标[游标默认是关闭的],打开后才能够提取游标中的数据 open mc; loop --提取游标中的数据 --每fetch一次,就提取了一条数据 fetch mc into v_ename,v_sal; --判断是否有数据,如果没有就退出 exit when mc%notfound; dbms_output.put_line(v_ename||' '||v_sal); end loop; --关闭游标 close mc; end;
PL/SQL游标的使用方法
猜你喜欢
转载自1084647490.iteye.com/blog/2258008
今日推荐
周排行