Oracle- 游标

  Oracle的游标比起SQLSERVER的游标,在写法上似乎更加灵活和方便些。

  在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
  注意:在声明游标时,select_statement不能包含INTO子句。当使用显示游标时,INTO子句是FETCH语句的一部分。

 

一、FOR循环游标 (常用的一种游标)

复制代码
DECLARE
  --类型定义
  cursor cc is select sname,age,birthday from T_STUDENT;
  --定义一个游标变量
  ccrec cc%rowtype;
  begin
  --for循环
  for ccrec in cc loop
      
      dbms_output.put_line(ccrec.sname);
      dbms_output.put_line(ccrec.age);
      dbms_output.put_line(to_char(ccrec.birthday,'yyyy-MM-dd')  );
      dbms_output.put_line('-----------');
      
  end loop;       
end;
复制代码

 

二、FETCH循环游标

复制代码
--类型定义
declare 
  cursor cc is select sname,age,birthday from T_STUDENT;
  --定义一个游标变量
  ccrec cc%rowtype;
begin
  --打开游标
  open cc;
  --loop循环
  loop
  --提取一行数据到ccrec中 
  fetch cc into ccrec;
      exit when cc%notfound;
      dbms_output.put_line(ccrec.sname);
      dbms_output.put_line(ccrec.age);
      dbms_output.put_line(to_char(ccrec.birthday,'yyyy-MM-dd')  );
      dbms_output.put_line('-----------');
  end loop; 
  --关闭游标
close cc;  
end;
复制代码


三、引用游标/动态游标

复制代码
  --select语句是动态的
declare
  --定义一个类型(ref cursor)弱类型    
  type cur is ref cursor;
  --强类型(返回的结果集有要求)
  type cur1 is ref cursor return emp%rowtype;
  --定义一个ref cursor类型的变量   
  cura  cur;
  c1rec emp%rowtype;
  c2rec dept%rowtype;
begin
  DBMS_output.put_line('输出员工');
  open cura for
    select * from emp;
  loop
    fetch cura
      into c1rec;
    exit when cura%notfound;
    DBMS_output.put_line(c1rec.ename);
  end loop;
  DBMS_output.put_line('输出部门');
  open cura for
    select * from dept;
  loop
    fetch cura
      into c2rec;
    exit when cura%notfound;
    DBMS_output.put_line(c2rec.dname);
  end loop;
  close cura;
end;
复制代码

 

posted @   春天又来了  阅读(165)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示