• 欢迎访问金笔头博客,这是一个菜鸟(伪)程序员的自留地,欢迎访问我的github:点击进入

Oracle笔记(3)SQL游标

oracle eason 1470次浏览 1个评论 扫描二维码

游标–内存中的一块区域,存放的是select的结果集

游标用来处理从数据库中检索的多行记录(使用SELECT语句),有了游标用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作。

 

游标可以分为显式游标和隐式游标

显式游标:

显式游标被用于处理SELECT 语句返回的多行数据,游标名通过CURSOR…IS 语句显式地赋给SELECT 语句。

在PL/SQL中处理显式游标所必需的四个步骤:

1)声明游标:CURSOR cursor_name IS select_statement

2)为查询打开游标:OPEN cursor_name

3)取得结果放入PL/SQL变量中:

FETCH cursor_name INTO list_of_variables;

FETCH cursor_name INTO PL/SQL_record;

4)关闭游标:CLOSE cursor_name

隐式游标:

使用隐式游标时,用户无需进行声明、打开及关闭。

当运行DML语句时,PL/SQL自动新建并打开一个隐式游标来处理结果,游标是维护查询结果的在内存中的一个区域,游标在运行DML语句时打开,完成后关闭。

例如:
SELECT studentNo,studentName
INTO curStudentNo,curStudentName
FROM StudentRecord
WHERE name='gg';

上述游标自动打开,并把相关值赋给对应变量,然后关闭。执行完后,PL/SQL变量curStudentNo,curStudentName中已经有了值。

Oracle游标常用属性:
%notfound  fetch是否提取到数据 没有true 提到false
%found      fetch是否提取到数据 有true 没提到false
%rowcount  已经取出的记录的条数
%isopen    布尔值 游标是否打开

关于游标的使用举例

例子1:输出empn0,ename,sal   
Declare
     Cursor myCur is select empno,ename,sal from emp;
     vna varchar2(10);
     vno number(4);
     vsal number(7,2);
  Begin
     open myCur;
     fetch myCur into vno,vna,vsal;
     dbms_output.put_line(vno||'    '||vna||'    '||vsal);
     close myCur;
  End;
  /
例子2:使用loop遍历游标

  Declare
     Cursor myCur is select ename,job,sal,empno from emp;
     varE myCur%rowType;
  Begin
     if myCur%isopen = false then
        open myCur;
       dbms_output.put_line('Opening...');
     end if;
     loop
        fetch myCur into varE;
        exit when myCur%notfound;
        dbms_output.put_line(myCur%rowCount||'    '||vare.empno||'    '||vare.ename||'    '||v   are.sal);
     end loop;
     if myCur%isopen then
        Close myCur;
        dbms_output.put_line('Closing...');
     end if;
  End;
  /
例子3:使用For循环遍历游标

  Declare
     Cursor myCur is select * from emp;
  Begin
     for varA in myCur
      loop
         dbms_output.put_line(myCur%rowCount||'    '||varA.empno||'    '||varA.ename||'  '||varA.sal);
      end loop;
  End;
  /

金笔头博客, 版权所有丨如未注明 , 均为原创, 转载请注明Oracle笔记(3)SQL游标
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. Awesome article.Really looking forward to read more. Awesome.
    car sex2016-02-01 20:31 Reply Windows XP | Firefox 3.5.3