ORACLE——游标(cursor)

--游标
--高级语言中
--基本类型的变量:存放的是实际的数据。
--引用类型的变量:存放的是某个数据区域的地址(指针、引用都是引用类型的变量)。
--class Student
--{
   --int age;
   --string name;
--}


--Student s = new Student();
--s.age=12;
--s.name='Tom';


--指针、引用:存放地址的变量。
--游标:内容自动增长的指针变量,无法手动修改其值。
--关键字: cursor
--显式游标的使用步骤:
--1、声明 (在declare 子句中,用cursor关键字)
--2、打开 (open)
--3、循环读取游标所指向的数据(fetch..into..)
--4、关闭(close)
--注意: 游标自带的变量%notfound,判断数据是否取完。

--显示游标例子:用游标循环读取 dept的数据
declare
  cursor cur_dept   --声明游标
  is select * from dept;  --is关键字引出游标所指向的数据区 
  v_dept dept%rowtype;
begin
  open cur_dept;  
  loop
     fetch cur_dept into v_dept; --fetch作用:1、移向下一行 2、取出指向的数据
     exit when cur_dept%notfound; --如有数据%notfound返回false,没有返回true
     dbms_output.put_line(v_dept.dname);
  end loop; 
  close cur_dept;  --关闭游标
end;


--打印部门编号为30的所有员工的工号、姓名
declare
  cursor  cur_emp 
  is select empno,ename from emp where deptno=30;
  
  v_no emp.empno%type;
  v_name emp.ename%type;
begin
  open cur_emp;
  
   loop
      fetch cur_emp into v_no,v_name;
      exit when cur_emp%notfound;
      dbms_output.put_line(v_no||' '||v_name);
   end loop;
  
  close cur_emp;
end;

--输出部门的平均工资和最高工资,以及每个部门的部门名称和地址
--%type
--%rowtype
declare
  v_avg emp.sal%type;
  v_max emp.sal%type;
  v_dept dept%rowtype;
  v_deptno dept.deptno%type;
begin
   v_deptno:='&请输入';
  select avg(sal),max(sal) 
  into v_avg,v_max
  from emp where deptno=v_deptno;
  
  dbms_output.put_line(v_avg||' '||v_max);
  
  select * 
  into v_dept
  from dept where deptno=v_deptno;
  dbms_output.put_line(v_dept.dname||' '||v_dept.loc);
end;

--游标for循环
begin
  for v in (select * from dept)
  loop
    dbms_output.put_line(v.dname||' '||v.loc);
  end loop;
end;


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值