Oracle游标

概述

游标的概念:
用来存储多条查询数据的一种数据结构(‘结果集’),
它有一个 ‘指针’,从上往下移动(‘fetch’),从而能够 ‘遍历每条记录’

2. 优缺点
(1) 提高 sql ‘执行效率’
(2) 牺牲 ‘内存’
概念图
在这里插入图片描述
游标的类型:

	隐式游标
	显式游标
	REF游标

语法

基本写法

	1、声明游标
	2、开启游标
	3、获取数据
	4、关闭游标

示例

declare
    --声明显式游标并初始化
    cursor emp_cur is select * from emp e where e.employee_id=&部门编号 ;
    --声明变量类型接收一行数据
    emp_row emp%rowtype;
begin
  open emp_cur;
  loop
    --逐行读取游标赋值给变量
    fetch emp_cur into emp_row;
    --当游标中没有记录时退出循环
    exit  when emp_cur%notfound;
    dbms_output.put_line('员工编号:'||emp_row.employee_id||'工资:'||emp_row.salary);
  end loop;
  --关闭游标
  close emp_cur;
end;

游标4大属性

sql%isopen    		   判断游标是否 '开启'
sql%found				判断游标是否 '获取' 到值
sql%notfound		    判断游标是否 '没有获取' 到值(常用于 "退出循环")
sql%rowcount		    '当前' 成功执行的数据行数(非 "总记录数")

分类

隐式游标

  • 在PL/SQL中使用DML语句时自动创建隐式游标

  • 隐式游标自动声明、打开和关闭,其名为 SQL

  • 通过检查隐式游标的属性可以获得最近执行的DML 语句的信息

  • 隐式游标的属性有:

      %FOUND – SQL 语句影响了一行或多行时为 TRUE
      %NOTFOUND – SQL 语句没有影响任何行时为TRUE
      %ROWCOUNT – SQL 语句影响的行数
      %ISOPEN  - 游标是否打开,始终为FALSE
    
--隐式游标统一名称sql,常用属性%found、%notfound、%rowcount,%isopen
declare 

begin
  delete from student s where s.id between 1 and  100;
  --上面的DML语句是否有影响是数据,sql%found跟sql%notfound干好相反
  if sql%found then
  dbms_output.put_line('成功删除数据行:'||sql%rowcount);
  else
  dbms_output.put_line('没有找到对应记录');
  end if;
  if sql%isopen then--隐式游标永远是关闭状态
  dbms_output.put_line('当前游标打开'
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值