PL/SQL 会为程序中执行的每一条UPDATE,DELETE,INSERT 语句使用一个隐式游标。隐式游标有SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNT三个属性,这些属性用于控制程序流程或者了解程序的状态。
当运行DML语句时,PL/SQL打开一个内建游标并处理结果,游标是维护查询结果的内存中的一个区域,游标在运行DML语句时打开,完成后关闭。隐式游标只使用SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNT三个属性。SQL%FOUND,SQL%NOTFOUND是布尔值,SQL%ROWCOUNT是整数值。
1. SQL%FOUND和SQL%NOTFOUND
在执行任何DML语句前SQL%FOUND和SQL%NOTFOUND的值都是NULL,在执行DML语句后,SQL%FOUND的属性值将是:
a. TRUE :INSERT
b. TRUE :DELETE和UPDATE,至少有一行被DELETE或UPDATE.
c. TRUE :SELECT INTO至少返回一行
当SQL%FOUND为TRUE时,SQL%NOTFOUND为FALSE。
2. SQL%ROWCOUNT
在执行任何DML语句之前,SQL%ROWCOUNT的值都是NULL,对于SELECT INTO语句,如果执行成功,SQL%ROWCOUNT的值为1,如果没有成功,SQL%ROWCOUNT的值为0,同时产生一个异常NO_DATA_FOUND.
3. SQL%ISOPEN
SQL%ISOPEN是一个布尔值,如果游标打开,则为TRUE, 如果游标关闭,则为FALSE.对于隐式游标而言SQL%ISOPEN总是FALSE,这是因为隐式游标在DML语句执行时打开,结束时就立即关闭。
Declare
/* 定义静态游标 */
Cursor emps is
Select * from users where rownum<6 order by 1;
company_id users%rowtype;
Row number :=1;
Begin
Open emps; /* 打开静态游标 */
Fetch emps into company_id; /* 读取游标当前行 */
Loop
If emps%found then
Dbms_output.put_line('Looping over record '||row|| ' of ' || emps%rowcount);
Fetch emps into company_id;
Row := row + 1;
Elsif emps%notfound then
Exit;
End if;
End loop;
If emps%isopen then
Close emps; /* 关闭游标 */
End if;
End;
分享到:
相关推荐
### SQL Server 游标实例详解 #### 一、游标概念与作用 在SQL Server中,游标是一种数据库对象,允许我们逐行处理查询结果集中的数据。这与普通的SQL查询不同,在普通的查询中,结果集通常是作为一个整体来处理的。...
--以下是把批号拆分的游标 declare @EntryID int --定义变量行号 declare @BillNo varchar(100) --定义变量单据号 declare @Number varchar(100) --定义变量物料代码 declare @qty decimal(18,6) --定义变量数量 ...
### Oracle 游标实例解析及应用 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种数据库对象,它允许程序能够逐行处理查询结果集中的数据。与直接执行SQL语句获取整个结果集不同,游标可以逐行...
标题“Oracle游标实例”直接点明了文章的主题,即通过具体的示例来讲解Oracle中的游标使用方法。描述重复了标题内容,这表明文件的主要目的是提供关于Oracle游标的实例代码,供学习和参考。 ### 标签 标签“Oracle...
以下是对"既简单,又使用的游标实例"的详细解释。 游标,英文名为Cursor,是数据库管理系统(DBMS)提供的一种机制,用于在查询结果集中移动并处理单个记录。它在关系数据库中起着类似指针的作用,可以定位到结果...
下面将详细解释这两个概念及其在实际应用中的实例。 触发器是一种数据库对象,它能够在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行一段预定义的SQL代码。这允许我们在不修改应用程序代码的情况下,...
根据提供的文件信息,我们可以深入探讨其中涉及的关键概念和实践应用,包括Oracle中的游标使用方法、存储过程的定义以及如何创建并调用返回结果集的存储过程。 ### 1. 游标的使用方法 #### 1.1 游标基本概念 在...
本篇文章将深入探讨SQL游标的实例应用,帮助你掌握其使用技巧。 首先,我们要理解SQL游标的几个基本概念。游标有四个关键属性:%FOUND、%NOTFOUND、%ISOPEN和%ROWCOUNT。%FOUND用于检查是否在上次提取操作中找到一...
内涵增删查改实例 如果能不用游标,尽量不要使用游标 用完用完之后一定要关闭和释放 性能上,游标会吃更多的内存,减少可用的并发,占用宽带,锁定资源
根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要探讨的是如何在数据库环境中使用游标。游标是一种用于处理查询结果集的机制,允许我们逐行处理数据,这对于需要逐条记录进行操作的情况非常有用。...
本主题将深入探讨Oracle中的几个核心概念:函数、存储过程、游标以及简单的实例,这些都是数据库管理员和开发人员日常工作中不可或缺的部分。 首先,我们来了解**Oracle函数**。函数是预定义的代码块,接受零个或多...
Oracle游标是数据库管理系统中处理查询结果的一种方法,它允许我们逐行处理数据,而不仅仅是一次性获取所有结果。在Oracle中,游标分为隐式游标和显式游标。 ### 隐式游标 Oracle数据库在执行DML(插入、删除、更新...
MySQL游标是数据库管理系统中的一个重要概念,主要用于在存储过程或函数中逐行处理查询结果集。游标允许程序按需一次处理一行数据,而非一次性获取所有数据,这在处理大量数据时尤其有用,因为它可以避免一次性加载...
一个完整的游标由 5 部分组成,并且这 5 个部分应符合下面的顺序:声明游标、打开游标、从一个游标中查找信息、关闭游标、释放游标。 2. 声明游标 声明游标使用 DECLARE CURSOR 语句。此语句有两种语法声明格式,...
显式游标实例提供了三种不同类型的示例: 1. **不带参数的游标**:用于查询特定条件下的单行数据。例如,查询`empno=7788`的雇员姓名和工资。 2. **带参数的游标**:更灵活,允许用户通过参数动态地设置查询条件。...
龙摆尾(坚行).sql.txt和游标实例.sql.txt很可能是包含具体游标使用示例的文件,可能涵盖了诸如迭代处理数据、基于条件更新数据等场景。实际应用中,游标常用于循环执行某个操作,例如批量更新满足特定条件的记录...
FETCH NEXT FROM stu_corsor --下一条记录 FETCH PRIOR FROM stu_corsor --上一条记录
本文将深入探讨两种在Oracle存储过程中返回游标的实例。 首先,我们来看第一种方法,即声明系统游标。系统游标是Oracle预定义的游标,使用`sys_refcursor`作为参数类型。这种方法简单且高效,推荐使用。创建存储...
这个实例中,`DECLARE`语句用于声明变量,`CURSOR`语句用于创建游标,`OPEN`语句打开游标,`FETCH`语句用于从游标中获取数据,`WHILE`循环遍历游标,`UPDATE`语句更新数据,最后用`CLOSE`和`DEALLOCATE`关闭并释放...