IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> PL/SQL 游标 -> 正文阅读

[大数据]PL/SQL 游标

????????Oracle 创建一个称为上下文区域的内存区域,用于处理SQL语句,它包含处理该语句所需的所有信息。例如,处理的行数等。

????????游标是指向此上下文区域的指针。PL/SQL通过游标控制上下文区域,游标保存SQL语句返回的行(一行或多行)。 游标所在的行集称为活动集。我们可以命名一个游标,以便在程序中引用它来获取和处理SQL语句返回的行,一次处理一行。

????????PL/SQL中有两种类型的游标:隐式游标和显式游标。

隐式游标

????????在PL/SQL程序中执行DML SQL语句(INSERT、UPDATE、DELETE)时,Oracle会自动创建隐式游标。 程序员无法控制隐式游标及其信息。对于INSERT操作,游标保存需要插入的数据。对于UPDATE和DELETE操作,游标标识将受到影响的行。

????????在PL/SQL中,可以将最近的隐式游标引用为SQL游标,它始终具有%FOUND、%ISOPEN、%NOTFOUND和%ROWCOUNT等属性。SQL游标具有额外的属性%BULK_ROWCOUNT和%BULK_EXCEPTIONS,旨在与FORALL语句一起使用。

????????游标中最常用属性的描述如下:

  • %FOUND:

????????如果INSERT、UPDATE或DELETE语句影响一行或多行,或SELECT INTO语句返回一行或多行,则返回TRUE,否则返回FALSE。

  • %NOTFOUND:

????????与 %FOUND 的逻辑相反。如果INSERT、UPDATE或DELETE语句没有影响任何行,或SELECT INTO语句未返回任何行,则返回TRUE。 否则返回FALSE。

  • %ISOPEN:

????????由于Oracle在执行关联的SQL语句后会自动关闭SQL游标,因此总是为隐式游标返回FALSE。

  • %ROWCOUNT:

????????返回受INSERT、UPDATE或DELETE语句,或者受SELECT INTO语句影响的行数。

注意:任何SQL游标属性将被访问为sql%attribute_name,如下例所示。

DECLARE
   total_rows number(2);
BEGIN
   UPDATE customers
   SET salary = salary + 500;
   IF sql%notfound THEN
      dbms_output.put_line('没有找到客户信息~');
   ELSIF sql%found THEN
      total_rows := sql%rowcount;
      dbms_output.put_line('一共有:' || total_rows || ' 个客户的工资被更新! ');
   END IF;
END;
/

显示游标

????????显式游标用于处理返回多行的查询。

创建显式游标的语法:

CURSOR cursor_name IS select_statement;

显式游标的使用:

1、声明游标(初始化内存):声明游标使用名称和相关的SELECT语句来定义游标。

CURSOR c_customers IS
   SELECT id, name, address FROM customers;

2、打开游标(分配内存):打开游标将为游标分配内存,并使其准备好将SQL语句返回的行记录数据提取到其中。

OPEN c_customers;

3、获取数据:从游标获取数据,获取游标一次仅访问一行。

FETCH c_customers INTO c_id, c_name, c_addr;

4、关闭游标(释放内存):关闭游标意味着释放分配的内存。

CLOSE c_customers;

5、实例

DECLARE 
   c_id customers.id%type;
   c_name customers.name%type;
   c_addr customers.address%type;
   CURSOR c_customers is
      SELECT id, name, address FROM customers;
BEGIN
   OPEN c_customers;
   LOOP
   FETCH c_customers into c_id, c_name, c_addr;
      EXIT WHEN c_customers%notfound;
      dbms_output.put_line(c_id || ' ' || c_name || ' ' || c_addr);
   END LOOP;
   CLOSE c_customers;
END; 
/
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 18:56:33  更:2022-07-20 18:58:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 2:05:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码