SQL Server 初识游标
---恢复内容开始---
游标:游标是一种能从包含多个数据的结果集每次提取一条的机制
游标的特点是:
- 检索得到的数据集更加灵活
- 可有针对性的对数据进行操作
- 拥有对数据进行删除和更新的能力
为何使用游标:
- 游标提供了一种比较好的解决方案,可以将批操作变成行操作。
游标的步骤
- 定义游标
- 打开游标
- 使用游标
- 关闭游标
- 删除游标
代码详解:
1. 定义游标
DECLARE 游标名 [ INSENSITIVE ] [ SCROLL ] CURSOR
FOR T-SQL 语句
2. 打开游标
OPEN 游标名
3. 使用游标
FETCH
[ NEXT | PRIOR | FIRST | LAST
| ABSOLUTE { n | @nvar }
| RELATIVE { n | @nvar }
]
FROM 游标名
into 给局部变量赋值
ps 只有在定义游标时设置为SCROLL , 才可使用除 NEXT 其他标签
4. 关闭游标
CLOSE 游标名
5. 删除游标
DEALLOCATE 游标名
示例:
前提: 表 stuscore
表内数据:

目的: 将表改成如图形式

代码
/*定义局部变量,用于存储sql语句*/
declare @sql varchar(max)
set @sql='select distinct( sname )'
/*定义游标使用的的局部变量*/
declare @cname varchar(20)
/*定义游标*/
declare cur_stuscore cursor read_only for select distinct(cname) from stuscore
/*打开游标*/
open cur_stuscore
/*使用游标*/
fetch next from cur_stuscore into @cname
/*使用while循环,使语句遍历整表*/
while(@@FETCH_STATUS=0)
begin
set @sql=@sql+',(select s.score from stuscore s where s.cname='''+@cname+''' and s.sname=t.sname)as '''+@cname+''''
fetch next from cur_stuscore into @cname
end
/*更新SQL语句*/
set @sql=@sql+' from stuscore t'
/*执行SQL语句*/
exec (@sql)
/*关闭游标*/
close cur_stuscore
/*删除游标*/
deallocate cur_stuscore ps: SQL执行语句为:
select distinct( sname ),
(select s.score from stuscore s where s.cname='语文' and s.sname = t.sname) as '语文',
(select s.score from stuscore s where s.cname='数学' and s.sname = t.sname) as '数学',
(select s.score from stuscore s where s.cname='英语' and s.sname = t.sname) as '英语'
from stuscore t
SQL Server 初识游标的更多相关文章
- SQL Server之游标的基础知识
什么是游标: 游标是可以在结果集中上下游动的指针. 游标的作用: --允许定位到结果集中的特定行. --从结果集的当前位置检索一行或多行数据. --支持对结果集中当前位置的行进行修改. 注意:游标虽然 ...
- SQL SERVER CURSOR游标的使用(转载)
一:认识游标 游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集. 使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式. 用SQL语言从数据库中检索数据 ...
- SQL SERVER触发器游标小记
今天接到个需求用触发器来实现通过条件对其他表的更新.好久没摸SQL SERVER,电脑里也没SQL SERVER安装包,同事遂发来个安装包,一看吓一跳,3.6G!!!!经过漫长等待后,开始作业.需求如 ...
- SQL Server 利用游标解决Tempdb究极竞争-DBA-程序员需知
SQL Server tempdb分配竞争算是DBA老生常谈的问题了,几乎现在所有的DBA都知道多建几个文件来解决/缓解问题.但是深层次的的竞争依旧不可避免.这里给大家剖析下游标在tempdb中的特点 ...
- sql server中游标
参考:http://blog.csdn.net/luminji/article/details/5130004 利用SQL Server游标修改数据库中的数据 SQL Server中的UPDATE语句 ...
- SQL Server 2008 游标使用实例
本文使用以下两张数据库表作为演示对象. 1 游标初探--使用游标进行遍历 declare @classAndStudent table( class_id int, --班级ID class_name ...
- sql server 的游标
-- sql server 中的游标 --声明游标 /* declare cursorname [insensitive] [scroll] cursor for <select-查询块> ...
- Sql Server - CURSOR (游标)
1.声明游标 DECLARE 游标名 CURSOR SELECT语句(注:此处一定是SELECT语句) 2.打开游标 OPEN 游标名 3.读取 ...
- sql server 存储过程---游标的循环
sqlserver中的循环遍历(普通循环和游标循环) sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student
随机推荐
- 学习笔记之09小练习题(js:从小到大输出三个任意数,查成绩,相亲题,查体重,一元二次方程求根)
<script type="text/javascript"> /*第一题.输入三个整数,x,y,z,最终以从小到大的方式输出. 注意小点:1 字符串的拼接是用+,数学 ...
- mac idea sbt工程打jar包
1.首先保证sbt已下载,否则下载homebrew:在命令行输入/usr/bin/ruby XXX ->下载完成后在终端输入brew install sbt ->安装完毕后可以打jar包 ...
- Django自定义过滤器中is_safe和need_autoescape两个参数的理解
自定义template过滤器的方法参考文档,不再赘述 is_safe 文档说明过滤的两种最终形态,其中一种是设置register.filter(is_safe=True),但是对is_safe的具体作 ...
- 1、Http概述
1.1 Web客户端和服务器 HTTP 客户端和 HTTP 服务器共同构成了万维网的基本组件,客户端向服务器发送 HTTP 请求, 服务器会在 HTTP 响应中回送所请求的数据. 示意图: 1.2 媒 ...
- C# TextBlock 上标
我需要做一个函数,显示 ,但是看起来用 TextBlock 做的不好看. 我用 WPF 写的上标看起来不好看,但是最后有了一个简单方法让他好看. 本文告诉大家如何做一个好看的上标. 一开始做的方法: ...
- HTML5之appcache语法理解/HTML5应用程序缓存/manifest缓存文件官方用法翻译
习惯性的贴几个参考链接: W3School-HTML 5 应用程序缓存 官方 MDN window.applicationCache 接口文档 官方 MDN 用法示例 看所有的教程不如直接看最原始的官 ...
- JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 2
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7704914.html ------------------------------------ ...
- java中集合类HashSet、ArrayList、LinkedList总结
[HashSet] 1. HashSet存储不能够存储相同的元素,元素是否相同的判断:重写元素的equals方法.equals方法和hashCode方法必须兼容,如:equals方法判断的是用户的名字 ...
- 【转】CPU与内存的那些事
下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如下: 转: CPU的等待有多久? 原文标题:What Your Computer Does While You Wait 原文地址: ...
- 网页单位和rem小分享
有哪些网页尺寸单位? CSS 中的单位有很多种: 百分比(%) 英寸(in) 厘米(cm) 毫米(mm) 磅数(pt) 12 点活字(pc) 字母高度一半(ex) 父级字体(em) 像素(px) 根元 ...