All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
通过web.config设置数据库连接串_[Asp.Net教程]
Sql,server动态建立数据对象结构_[SQL,Server教程]
动态网页技巧:PHP,MySQL,integration_php资料_编程技术
利用GridView显示主细表并添加打开、关闭功能_[Asp.Net教程]
ASP.NET中多国语言的实现_[Asp.Net教程]
用PHP控制用户的浏览器_[PHP教程]
Asp.net,Socket,客户端(发送和接收数据,)_[Asp.Net教程]
精妙SQL语句整理_[SQL Server教程]
.Net+MySQL组合开发(一),开发工具篇_[Asp.Net教程]
知识库:.NET应用程序开发标准化_.net资料_编程技术
Reading number is top 10 pictures
男人帮杂志里的惹火性感美女1
2015中美最新武器装备巅峰对决!
Steal to eat bacon bird
In the world the most mysterious 21 place landscape3
天安门景物系列(一)
The world's top ten most beautiful railway station1
陪睡门马睿菈自曝写真 称首拍大尺度照片2
青涩甜美-王祖贤小时候的旧照片曝光
More attractive than sora aoi4
Magnificent cloud1
Download software ranking
电车之狼R
Kung fu panda - the secret of the teacher
Ashlynn Video3
C#与.NET技术平台实战演练
都市狐狸姑娘传
Boxer vs Yellow3
Unix video tutorial2
Tram sex maniac 2 (H) rar bag3
C语言教程TXT
美女写真3
delv published in(发表于) 2013/12/30 4:38:10 Edit(编辑)
SQL,游标学习_mssql学习_编程技术

SQL,游标学习_mssql学习_编程技术

SQL 游标学习_mssql学习_编程技术-你的首页-uuhomepage.com
问题描述:有以下2张表,
a_id a_name a_salary
Y2007001 达哥 3776
Y2007002 小杜 3232
Y2007003 小胖 53434
表A
b_id b.salary
Y2007001 467
Y2007002 532
Y2007003 987
表B
现在希望得到这样的数据表A里的a_Saloary加上表B的b_Salary是当前的总工资,并更新到表A。
你可以用视图来,表连接下就可以。
现在我们考虑下让SQL自己来处理,游标就是很好的方法。
原理:游标就是把数据按照指定要求提取出相应的数据集,然后逐条进行数据处理。
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语句可以是简单查询,也可以是复杂的接连查询和嵌套查询
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
实例1
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 --删除游标




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.