1.1游标的概念
游标(Cursor)它使用户可逐行访问由SQL
Server返回的结果集。使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。用SQL语言从数据库中检索数据后,结果放
在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在SQL
server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。
1.2 游标的优点
从游标定义可以得到游标的如下优点,这些优点使游标在实际应用中发挥了重要作用:
1)允许程序对由查询语句select返回的行集合中的每一行执行相同或不同的操作,而不是对整个行集合执行同一个操作。
2)提供对基于游标位置的表中的行进行删除和更新的能力。
3)游标实际上作为面向集合的数据库管理系统(RDBMS)和面向行的程序设计之间的桥梁,使这两种处理方式通过游标沟通起来。
1.3 游标的使用
讲了这个多游标的优点,现在我们就亲自来揭开游标的神秘的面纱。
使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。
1.3.1声明游标
最简单游标声明:DECLARE <游标名>CURSOR FOR<SELECT语句>;
其中select语句可以是简单查询,也可以是复杂的接连查询和嵌套查询
1.3.2 打开游标
非常简单,我们就打开刚才我们声明的游标mycursor
OPEN mycursor
1.3.3读取数据
FETCH [ NEXT | PRIOR | FIRST | LAST] FROM { 游标名 | @游标变量名 } [ INTO @变量名 [,…] ]
参数说明:
NEXT 取下一行的数据,并把下一行作为当前行(递增)。由于打开游标后,行指针是指向该游标第1行之前,所以第一次执行FETCH NEXT操作将取得游标集中的第1行数据。NEXT为默认的游标提取选项。
INTO @变量名[,…] 把提取操作的列数据放到局部变量中。
列表中的各个变量从左到右与游标结果集中的相应列相关联。
各变量的数据类型必须与相应的结果列的数据类型匹配或是结果列数据类型所支持的隐性转换。变量的数目必须与游标选择列表中的列的数目一致。
1.3.4关闭游标
CLOSE mycursor
1.3.5删除游标
DEALLOCATE mycursor
给出具体的例子:
declare @id nvarchar(20) --定义变量来保存ID号
declare @A float --定义变量来保存值
declare mycursor cursor for select * from tb_c --为所获得的数据集指定游标
open mycursor --打开游标
fetch next from mycursor into @id,@A --开始抓第一条数据
while(@@fetch_status=0) --如果数据集里一直有数据
begin
select tb_b.name,(tb_b.gz + @A) from tb_b where tb_b.id = @id --开始做想做的事(什么更新呀,删除呀)
fetch next from mycursor into @id,@A --跳到下一条数据
end
close mycursor --关闭游标
deallocate mycursor --删除游标
分享到:
相关推荐
以下是关于Oracle游标使用的一些关键知识点: 1. **游标的基本概念**: 游标(Cursor)是一种机制,它允许我们遍历和操作由SQL查询返回的结果集。通过游标,我们可以控制数据的读取顺序,一次只处理一行,或者在...
根据提供的文件信息,本文将详细解释一个MySQL存储过程的例子,其中包含了游标的使用。这个存储过程主要用于处理一批数据,涉及到日期范围内的数据处理、异常处理等。下面将逐一解析存储过程中涉及的重要知识点。 #...
游标 ms sql 例子----- 大概模式 临时表使用等-——---
### SQL游标使用详解 #### 一、引言 在SQL编程中,游标是一种用于处理查询结果集的工具,可以实现对数据行的逐行访问。本文将通过一个具体的示例来详细介绍如何使用SQL游标,并解释其背后的原理与应用场景。 ####...
以下是一个简单的游标声明和使用的例子: ```sql DECLARE -- 声明变量来存储游标结果 v_emp_id NUMBER; v_emp_name VARCHAR2(50); -- 定义游标 CURSOR emp_cursor IS SELECT employee_id, first_name FROM ...
本篇文章将深入探讨SQL Server中的游标使用方法,并通过实例进行演示。 首先,我们需要了解游标的四种类型:静态、动态、键集和只读。静态游标在打开时获取全部数据,数据集不会随基础数据表的变化而更新;动态游标...
游标嵌套是指在一个游标内部使用另一个游标,这在处理复杂的数据逻辑时非常有用。例如,你可以先遍历一个表,然后对每个记录再进行更复杂的子查询。嵌套游标需谨慎使用,因为它们可能导致性能下降,尤其是在处理大量...
在下面的例子中,我们将通过几个不同的方法来展示如何使用明确游标: 1. **使用`WHILE`循环遍历游标** 在这个例子中,我们首先创建一个名为`PROC_STU1`的过程,它包含一个明确游标`cur_stu`,用于查询`STUDENT`表...
在这个例子中,`cursor_name`是游标的名称,`select_statement`是查询语句,`variable_name`是用于存储游标每一行数据的变量,`column_data_type`是变量的数据类型。 **游标for循环**简化了显式游标的使用,可以...
隐式游标是Oracle自动管理的,每次执行DML语句(INSERT、UPDATE、DELETE)时都会使用。而显式游标则需要我们手动声明和管理,适用于更复杂的逻辑处理。 1. 隐式游标: 隐式游标在Oracle中默认开启,无需显式声明。...
- 例如,以下过程展示了如何使用游标属性处理DML语句的结果: ```sql CREATE OR REPLACE PROCEDURE FIRE_EMPLOYEE (pempno in number) AS v_ename EMP.ENAME%TYPE; BEGIN SELECT ename INTO v_ename FROM emp...
### SQL编程中的游标的使用方法 #### 一、游标的基本概念 在SQL编程中,游标是一种数据库对象,它允许程序逐行处理查询结果集中的数据,这与一般的SQL语句一次处理整个结果集不同。游标可以用于实现复杂的业务逻辑...
在这个例子中,游标隐式声明并自动打开、关闭,记录变量r1直接由查询定义。 4. **游标中的更新和删除**:在PL/SQL中,可以使用UPDATE和DELETE语句结合WHERE CURRENT OF子句更新或删除游标当前指向的数据行。首先...
在这个例子中,我们声明了一个名为`temp_cur`的游标,用于处理`table_test`表中`f_user_id`为1的记录。通过`continue handler`处理SQLSTATE '02000'异常,即无更多数据时停止循环。然后,使用`while`循环逐行处理...
通过学习这些例子,你将能够更好地理解和应用Oracle中的函数、游标和触发器。实践是掌握这些概念的关键,所以尝试运行这些脚本,观察它们如何影响数据库,并根据需要调整它们以满足自己的需求。在学习过程中,你可能...
自己做的存储过程含游标例子,对于初学存储过程和游标的人有帮助
本文主要探讨了在SQL Server 2000中如何利用游标处理数据,并通过一个具体的示例来展示游标的使用方法。 #### 核心知识点解析 ##### 1. 游标简介 在SQL Server 2000中,游标是一种用于处理结果集中的行的机制。它...
以下将通过详细的例子为您介绍显式游标和隐式游标。 显式游标: 1. 定义游标:CURSOR CUR_NAME P1,P2,... IS SELECT 语句 A. 该 SELECT 语句不可是SELECT..INTO..语句。 B. 游标可以有参数,这些参数用来参与...
以下是一个使用显式游标查询20号部门所有员工的信息的例子: ```sql DECLARE v_empno EMP.EMPNO%TYPE; v_ename EMP.ENAME%TYPE; v_sal EMP.SAL%TYPE; v_deptno EMP.DEPTNO%TYPE; CURSOR emp_cursor IS SELECT...
根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要探讨的是如何在数据库环境中使用游标。游标是一种用于处理查询结果集的机制,允许我们逐行处理数据,这对于需要逐条记录进行操作的情况非常有用。...