Oracle学习笔记第十二天-02

Oracle学习笔记第十二天-02

游标

隐式游标

概念:Oracle自动在后台使用的游标,用户不参与任何操作,所以对用户是“透明”(隐藏)的。

特征:

  1. 不能手动打开、提取、关闭
  2. 使用SELECT…INTO…语句时,Oracle会自动创建、打开、取值(Fetch)、Close。

使用范围:

​ 通过检查隐式游标属性,可以获取最近执行的select单行语句或者其它DML语句信息。

执行dml操作时会自动定义、打开名叫SQL的隐式游标,并且dml语句执完结束后,隐式游标自动关闭。
set serveroutput on;
declare
begin
     --执行dml操作时会自动定义、打开名叫SQL的隐式游标
     --并且dml语句执完结束后,隐式游标自动关闭
     update emp set sal = sal + 100
     where deptno = 10;
     
     if sql%isopen then
         dbms_output.put_line('游标处于打开状态');
     else
         dbms_output.put_line('游标处于关闭状态');
     end if;
     
      if sql%found then
         dbms_output.put_line('更新成功,更新的行数为:'||sql%rowcount);
     else
         dbms_output.put_line('更新失败');
     end if;
end;
/

隐式游标

REF游标(引用游标)(动态游标)

-- 语法
-- 定义PEF游标类型
type 游标类型 is ref cursor return 记录类型
-- 定义该类型的变量
游标变量 自定义REF游标类型
  1. 与其它复合类型一样,必须要定义自己的新的游标类型(要先定义数据的结构)以后,再用新的游标类型定义游标变量才可以使用。
  2. 表%rowtype 指出:返回的数据有几个列以及各列数据类型。
--演示:游标变量使用步骤 案例:输出所有员工姓名
DECLARE
 --1. 定义引用游标类型
 TYPE emp_cur_type IS REF CURSOR 
                   RETURN emp%ROWTYPE;
 --2. 定义游标变量
 emp_cur emp_cur_type;
 --3. 定义变量保存一行记录
 emp_row  emp%ROWTYPE;
BEGIN
  --4. 打开游标
  OPEN emp_curFOR SELECT * FROM emp ORDER BY sal DESC;
  --5. 获取游标的一行数据。
  FETCH emp_curINTO emp_row;
  -- 循环获取数据
  WHILE emp_cur%FOUND
  LOOP
     dbms_output.put_line(emp_row.ename||'-->'||emp_row.sal);
     FETCH emp_curINTO emp_row;
  END LOOP;
END;

猜你喜欢

转载自blog.csdn.net/xxydzyr/article/details/85222762
今日推荐