Oracle学习笔记二十:游标的简介和使用「终于解决」

Oracle学习笔记二十:游标的简介和使用「终于解决」一、游标概念 • 在 PL/SQL 块执行 SELECT/INSERT/UPDATE/DELETE 语句时,Oracle 会在内存中为其分配上下文区,而游标是指向该区域的指针。 • 游标为应用程序提供

Oracle学习笔记二十:游标的简介和使用

一、游标概念

• 在 PL/SQL 块执行 SELECT/INSERT/UPDATE/DELETE 语句时,Oracle 会在内存中为其分配上下文区,而游标是指向该区域的指针。

• 游标为应用程序提供了一种对具有多行数据查询结果集中的每一行单独处理的方案,是设计交互式应用程序的编程接口。

二、游标优点

• 游标允许应用程序对查询语句返回的行结果集中的每一行进行相同或者不同的操作。

• 游标提供了对基于游标位置而对表中数据行进行修改或者更新的能力。

• 游标把作为面向集合数据库管理系统和面向行的程序设计两者联系起来,使两个不同的数据处理方式能够进行沟通。

三、游标分类

1)隐式游标

  • 非用户显式声明的游标。

  • PL/SQL为所有的DML语句都自动声明了隐式游标,如 SELECT INTO语句、INSERT语句、DELETE语句和UPDATE语句。

2)显式游标

  • 是由用户声明和操作的游标。

3)Ref游标

  • 用于处理运行时才确定的动态查询语句的结果。

四、游标使用

4.1、显示游标

1)显示游标的使用步骤:

  • 定义游标

  • 打开游标

  • 使用游标

  • 关闭游标

2)定义显示游标的语法:

  • 定义显式游标在 PL/SQL 语句块 DECLARE 中完成:

  cursor cursor_name [(参数名 参数数据类型,……)] [return 数据类型]

    is 查询名句

3)打开游标

  • open 游标名(输入变量列表)

  • 打开游标语句执行与游标关联的查询,绑定输入变量,识别活动集并将游标指针置于第一行。

4)取出数据

  • fetch 游标名 into 变量名

5)游标使用完毕之后需要关闭

  • close 游标名

declare
    cursor c_emp is select empno,ename from emp;
    v_empno emp.empno%type;
    v_ename emp.ename%type;
begin
    if not c_emp %isopen then
        open c_emp;
    end if;
    --抓取游标中的第一条记录
    fetch c_emp into v_empno,v_ename;
    dbms_output.put_line(v_empno || "-" || v_ename);
    --游标使用完毕后关闭游标
    close c_emp;
end;

4.2、游标属性

用户可以通过检查游标属性来确定游标的当前状态:

  • %FOUND

    • FETCH语句成功返回时,则%FOUND的值为TRUE。

  • %NOTFOUND

    • FETCH语句未能提取行时,则%NOTFOUND的值为TRUE。

  • %ISOPEN

    • 如果游标已经打开,则返回TRUE,否则返回FALSE。

  • %ROWCOUNT

    • 返回目前为止游标提取的行数,%ROWCOUNT为数值型属性。在第一次获取之前,%ROWCOUNT为0。当FETCH语句返回一行时,则该数加1。

4.3、遍历游标

循环取出游标中的值:

declare
    cursor c_emp is select empno,ename from emp;
    v_empno emp.empno%type;
    v_ename emp.ename%type;
begin
    if not c_emp %isopen then
        open c_emp;
    end if;
    
    loop
        fetch c_emp into v_empno,v_ename;
        exit when c_emp %notfound;
        dbms_output.put_line(v_empno || "-" || v_ename);
    end loop;
    close c_emp;
end;

4.4、游标循环

• 为了简化游标的应用,Oracle提供了游标的 for 循环语句。

• 工作原理:

  • 游标的for循环可以隐式地 open,fetch,close 游标以及循环处理结果集。

declare
    cursor c_emp is select empno,ename from emp;
begin
    for emp in c_emp loop
        dbms_output.put_line(emp.empno || "-" || emp.ename);
    end loop;
end;

 

原文地址:https://www.cnblogs.com/atomy/archive/2022/06/05/16342760.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5161.html

(0)
上一篇 2023-05-20
下一篇 2023-05-20

相关推荐

  • Python中心函数

    Python中心函数Python中心函数指的是Python编程语言中的核心函数,是Python语言开发者必须掌握的函数。这些函数涉及到Python编程的各个方面,例如I/O操作、字符串操作、列表和元组等基本数据类型操作、迭代器和生成器、函数和模块等高级语言特性。

    2024-06-15
    51
  • 深入剖析Python中Sunken意义

    深入剖析Python中Sunken意义Sunken是tkinter库中的一个属性,用于设置控件的风格外观。通常在按钮、菜单栏等可点击的控件上使用Sunken效果,以突出控件的交互性。它的主要特点是在控件的边框线内凹陷一个像素,形成一种3D的立体效果。

    2024-04-04
    70
  • asp.net C# 连接MySQL8.0的caching_sha2_password问题

    asp.net C# 连接MySQL8.0的caching_sha2_password问题解决方法可用以下命令: 命令行登录mysql; mysql>use mysql; mysql>ALTER USER root IDENTIFIED WITH mysql_native_pa

    2023-02-12
    162
  • Python如何运行代码

    Python如何运行代码Python 是一种互动式、面向对象的解释型高级程序设计语言。Python 语言具有易于上手、易于阅读、代码简洁明了等特点。Python 运行代码的方式也有很多种,本文将从多个角度细致地阐述 Python 如何运行代码。

    2024-04-19
    73
  • 优化数值计算:Python实现正弦函数的快速计算

    优化数值计算:Python实现正弦函数的快速计算在数值计算领域中,正弦函数是非常常见的一个函数,无论从理论研究还是实际应用中都具有重要意义。正弦函数的计算是一项基本任务,如何快速、准确地计算正弦函数一直是计算机领域的一大挑战。Python作为一门高级编程语言,在数学计算和科学计算方面具有广泛的应用和良好的性能表现。因此使用Python实现正弦函数的快速计算将会非常的有意义。

    2024-03-17
    85
  • 包含使用flink新python的词条

    包含使用flink新python的词条 方法:

    2023-11-19
    127
  • PHP操作Elasticsearch7.6

    PHP操作Elasticsearch7.6首先打开Elasticsearch官网了解对应编程语言的API https://www.elastic.co/guide/en/elasticsearch/client/index.html 点击 P

    2023-03-29
    170
  • 在Ubuntu系统上安装StoneDB数据库[亲测有效]

    在Ubuntu系统上安装StoneDB数据库[亲测有效]今天我会进行StoneDB数据库在Ubuntu 22.04系统下的安装。 严格按照官方文档的步骤执行,看看能否顺利安装。 准备Ubuntu系统 我已在虚拟机中安装好了Ubuntu 22.04版本的系统

    2023-06-03
    143

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注