【Oracle】PL/SQL 显式游标、隐式游标、动态游标

本文详细介绍了Oracle中的PL/SQL游标,包括显式游标的基本用法,如游标属性和FOR循环的应用,隐式游标的自动处理特点,以及如何更新或删除当前游标数据。此外,还探讨了动态游标的概念,它允许与不同查询语句连接,提高了灵活性。
摘要由CSDN通过智能技术生成

在PL/SQL块中执行SELECTINSERTDELETEUPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),即缓冲区。游标是指向该区的一个指针,或是命名一个工作区(Work Area),或是一种结构化数据类型。

在每个用户会话中,可以同时打开多个游标,其数量由数据库初始化参数文件中的OPEN_CURSORS参数定义。

对于不同的 SQL 语句,游标的使用情况不同:

SQL语句

游标

非查询语句

隐式的

结果是单行的查询语句

隐式的或显示的

结果是多行的查询语句

显示的


处理显式游标

例:

DECLARE
   CURSOR c4(dept_id NUMBER, j_id VARCHAR2) --1、声明游标,有参数没有返回值
   IS
      SELECT first_name f_name, hire_date FROM employees
      WHERE department_id = dept_id AND job_id = j_id;

    --基于游标定义记录变量,比声明记录类型变量要方便,不容易出错
    v_emp_record c4%ROWTYPE;
BEGIN
   OPEN c4(90, 'AD_VP');             --2、打开游标,传递参数值
   LOOP
      FETCH c4 INTO v_emp_record;    --3、提取游标fetch into
      IF c4%FOUND THEN
         DBMS_OUTPUT.PUT_LINE(v_emp_record.f_name||'的雇佣日期是'
                            ||v_emp_record.hire_date);
      ELSE
         DBMS_OUTPUT.PUT_LINE('已经处理完结果集了');
         EXIT;
      END IF;
   END LOOP;
   CLOSE c4;                         --4、关闭游标
END;

退出LOOP或者用:

EXIT 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值