有2个表,
表A
- ID name salary
- 1 小张 2000
- 2 小王 1800
- 3 小刘 2200
- 4 小赵 2100
- 5 小李 3000
表B
- ID bonus
- 1 500
- 2 480
- 3 400
- 4 600
- 5 1000
表B与表A通过id相关联
现在希望数据表A中的所有salary等于salary加上表B中的bonus列总的和是当前的总工资,并更新到表A。
可以用视图来,表连接下就可以。
现在想让SQL自己来处理,游标就是很好的方法
原理:游标就是把数据按照指定要求提取查询出相应的数据集,然后再逐条对每一行数据进行处理。
1.1游标的概念
游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集。使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在SQL server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。
1.2游标的优点
从游标定义可以得到游标的如下优点,这些优点使游标在实际应用中发挥了重要作用:
1)允许程序对由查询语句select返回的行集合中的每一行执行相同或不同的操作,而不是对整个行集合执行同一个操作。
2)提供对基于游标位置的表中的行进行删除和更新的能力。
3)游标实际上作为面向集合的数据库管理系统(RDBMS)和面向行的程序设计之间的桥梁,使这两种处理方式通过游标沟通起来。
1.3游标的使用
使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。
1)、最简单游标声明:
DECLARE <游标名> CURSOR FOR<SELECT语句>;
其中select语句可以是简单查询,也可以是复杂的接连查询和嵌套查询
如:
declare mycursor cursor for select * from tb_A
2)、打开游标
非常简单,我们就打开刚才我们声明的游标mycursor
如:
OPEN mycursor
3)、读取数据
FETCH [ NEXT | PRIOR | FIRST | LAST ] FROM { 游标名 | @游标变量名 } [ INTO @变量名 [,…] ]
参数说明:
NEXT 取下一行的数据,并把下一行作为当前行(递增)。由于打开游标后,行指针是指向该游标第1行之前,所以第一次执行FETCH NEXT操作将取得游标集中的第1行数据。NEXT为默认的游标提取选项。
INTO @变量名[,…] 把提取操作的列数据放到局部变量中。
列表中的各个变量从左到右与游标结果集中的相应列相关联。
各变量的数据类型必须与相应的结果列的数据类型匹配或是结果列数据类型所支持的隐性转换。变量的数目必须与游标选择列表中的列的数目一致。
4)、关闭游标
CLOSE mycursor
5)、删除游标
DEALLOCATE mycursor
具体例子
declare @id int --定义变量来保存ID号
declare @S float --定义变量来保存值
declare mycursor cursor for select * from tb_B --为所获得的数据集指定游标
open mycursor --打开游标
fetch next from mycursor into @id,@S --开始获得第一条数据
while(@@fetch_status=0) --如果数据集里一直有数据
begin
update tb_A set salary = (tb_A.salary + @S) where tb_A.id = @id
fetch next from mycursor into @id,@S --跳到下一条数据
end
close mycursor --关闭游标
deallocate mycursor --删除游标
分享到:
相关推荐
### SQL游标使用详解 #### 一、引言 在SQL编程中,游标是一种用于处理查询结果集的工具,可以实现对数据行的逐行访问。本文将通过一个具体的示例来详细介绍如何使用SQL游标,并解释其背后的原理与应用场景。 ####...
### SQL游标原理和使用方法 #### 一、引言 在数据库开发中,当我们需要检索数据时,通常会使用`SELECT`语句。但在某些情况下,我们需要从查询结果集中逐条读取记录,这时就需要用到游标。本文将详细介绍SQL游标的...
SQL游标小计
SQL游标是数据库管理系统中一个重要的概念,它允许程序员按需逐行处理查询结果,而不仅仅是一次性获取所有数据。在数据库编程中,特别是在处理大量数据或进行复杂事务时,游标显得尤为有用。本文将详细讲解SQL游标的...
### SQL 游标详解 #### 一、游标的基本概念 在SQL中,游标是一种特殊的指针,用于逐行地检索查询结果。这与一般的SQL查询不同,后者通常是返回所有匹配的结果集。游标提供了对从表或多个表中获取的数据进行遍历的...
SQL游标是数据库管理系统中一个重要的概念,尤其在Oracle数据库中,它被广泛用于处理复杂的查询和数据操作。本教程将深入探讨SQL游标的使用,帮助你更好地理解和掌握这一技术。 首先,我们要明白什么是SQL游标。...
记住,熟练掌握SQL游标对于任何数据库开发者来说都是至关重要的技能,无论是在日常的查询任务还是在复杂的业务逻辑处理中,游标都能发挥重要作用。通过不断练习和学习,你将能够更好地理解和运用SQL游标,从而提升你...
本示例通过一系列步骤展示了如何使用SQL游标来处理表中的数据。它涉及到了变量声明、条件判断、游标的声明与操作等多个方面。需要注意的是,虽然游标提供了强大的数据处理能力,但其性能通常不如基于集合的查询操作...
标题“关于sql游标的使用教程及案例”指出了文档的核心内容,即将对SQL游标使用进行讲解,并通过具体案例加深理解。描述“对游标使用的讲解及相关案例”进一步明确了文档将提供游标使用的详细解释,并结合实例进行...
### SQL游标深入解析与应用案例 #### 一、SQL游标基础知识 **SQL游标**是一种数据库对象,主要用于在数据库管理系统中处理结果集中的数据行。它允许用户逐行检索查询结果,并对每一行执行复杂的操作。游标通常用于...
一个简单的用法一个简一个简单的用法一个简单的用法单的用法一个简单的用法一个简单的用法一个简单的用法一个简单的用法一个简单的用法一个简单的用法一个简单的用法一个简单的用法一个简单的用法
SQL游标是数据库开发中的一种重要工具,尤其在处理逐条数据操作的场景下显得尤为重要。游标允许程序员按照特定顺序访问查询结果集,并对每一行数据进行独立的操作,如读取、修改、删除等。这与传统的面向集合的...
### SQL游标使用详解 #### 一、游标概述 在深入探讨SQL游标的使用之前,我们先来了解一下什么是游标。游标是数据库管理系统的功能之一,它允许用户逐行处理查询结果集中的数据。通常情况下,当我们执行一个SELECT...
总之,SQL游标提供了一种灵活的方式来处理和交互数据库中的数据,允许用户按需处理每一行,这在某些复杂业务逻辑或需要逐行检查和修改数据的场景下特别有用。然而,由于游标消耗更多资源,对于大数据量的操作,通常...
在数据库管理中,SQL游标是一种用于管理结果集的技术,它可以逐条遍历结果集中的数据。本文从SQL游标的基本原理出发,详细介绍了游标的操作方法及其在实际数据处理中的应用。 首先,SQL游标解决了直接使用SQL语句...
"SQL游标先进先出操作"这个主题聚焦于如何利用游标实现类似队列的数据处理方式,即先进先出(FIFO)原则。在数据库管理中,这种机制对于执行特定类型的任务,如处理顺序数据流或逐个处理记录,尤其有用。 首先,...
SQL Server 编程基础 - T-SQL 游标 T-SQL 游标是 SQL Server 中的一种重要概念,提供了一种对从表中检索出的数据进行操作的灵活手段。游标是一种能从包含多条数据记录的结果集中每次提取一条记录的机制,用户可以...
### SQL游标的运用 在SQL中,游标(Cursor)是一种强大的工具,允许用户逐行处理查询结果集,尤其在需要对每一行数据进行特定操作时非常有用。游标可以被视为一个临时存储区域,其中包含了由SELECT语句返回的数据行...