---恢复内容开始---

   

  游标:游标是一种能从包含多个数据的结果集每次提取一条的机制

    游标的特点是:

      • 检索得到的数据集更加灵活
      • 可有针对性的对数据进行操作
      • 拥有对数据进行删除和更新的能力

    为何使用游标:

      • 游标提供了一种比较好的解决方案,可以将批操作变成行操作。

    游标的步骤

    1.    定义游标
    2.    打开游标
    3.    使用游标
    4.    关闭游标
    5.    删除游标

    代码详解:

      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 初识游标的更多相关文章

  1. SQL Server之游标的基础知识

    什么是游标: 游标是可以在结果集中上下游动的指针. 游标的作用: --允许定位到结果集中的特定行. --从结果集的当前位置检索一行或多行数据. --支持对结果集中当前位置的行进行修改. 注意:游标虽然 ...

  2. SQL SERVER CURSOR游标的使用(转载)

    一:认识游标 游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集. 使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式. 用SQL语言从数据库中检索数据 ...

  3. SQL SERVER触发器游标小记

    今天接到个需求用触发器来实现通过条件对其他表的更新.好久没摸SQL SERVER,电脑里也没SQL SERVER安装包,同事遂发来个安装包,一看吓一跳,3.6G!!!!经过漫长等待后,开始作业.需求如 ...

  4. SQL Server 利用游标解决Tempdb究极竞争-DBA-程序员需知

    SQL Server tempdb分配竞争算是DBA老生常谈的问题了,几乎现在所有的DBA都知道多建几个文件来解决/缓解问题.但是深层次的的竞争依旧不可避免.这里给大家剖析下游标在tempdb中的特点 ...

  5. sql server中游标

    参考:http://blog.csdn.net/luminji/article/details/5130004 利用SQL Server游标修改数据库中的数据 SQL Server中的UPDATE语句 ...

  6. SQL Server 2008 游标使用实例

    本文使用以下两张数据库表作为演示对象. 1 游标初探--使用游标进行遍历 declare @classAndStudent table( class_id int, --班级ID class_name ...

  7. sql server 的游标

    -- sql server 中的游标 --声明游标 /* declare cursorname [insensitive] [scroll] cursor for <select-查询块> ...

  8. Sql Server - CURSOR (游标)

    1.声明游标            DECLARE 游标名 CURSOR SELECT语句(注:此处一定是SELECT语句)        2.打开游标           OPEN 游标名 3.读取 ...

  9. sql server 存储过程---游标的循环

    sqlserver中的循环遍历(普通循环和游标循环) sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student

随机推荐

  1. 聊聊VUE中的nextTick

    在谈nextTick之前,先要说明一件事,可能在我们平时使用vue时并没有关注到,事实上,vue执行的DOM更新是异步的. 举个栗子: <template> <div class=& ...

  2. 详解python命名空间和作用域

    1.典型案例 先从几个典型的案例来看下名称空间及作用域对python代码运行的影响,请看下面几个代码实例及其执行结果,是否符合你的预期. 代码1:块作用域 if True: i = 1 print i ...

  3. PhoneWindow,ViewRoot,Activity之间的大致关系

    http://www.nowamagic.net/academy/detail/50160216 在android里,我们都知道activity.但是一个activity跟一个Window是一个什么关 ...

  4. CSS之 border 属性

    特性 border-width 不支持百分比  border-color 默认颜色是 color  border-color 透明值的作用:可利用增加可点击区域,利用内阴影做边框  border 应用 ...

  5. WPF DelegateCommand 出现Specified cast is not valid

    使用 DelegateCommand 出现 Specified cast is not valid 最近写快捷键需要 DelegateCommand ,于是用了 DelegateCommand< ...

  6. Learning Scrapy 中文版翻译 第一章

    第一章:scrapy介绍 欢迎来到scrapy之旅.通过这本书,我们将帮助你从只会一点或者零基础的Scrapy初学者达到熟练使用这个强大的框架在互联网或者其他资源抓取海量的数据.在这一章节,我们将给你 ...

  7. hdu4821 String

    您也可以在我的个人博客中阅读此文章:跳转 题意 一个字符串S 问其中有几个子串能满足以下条件:1.长度为m*l2.可以被分成m个l长的不同的子串问题就变成了如何快速的判断着m个子串是否存在相同的 思路 ...

  8. (扩展根目录容量方法汇总)把Linux系统迁移到另一个分区或者硬盘

    Linux系统扩容方法汇总 相信很多朋友都有过这样的经历,本想装个Ubantu玩玩,没想到玩久了反而不习惯Windows了,然而开始装系统的时候只分配了非常小的空间,那应该怎样扩展我们的ubantu呢 ...

  9. [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念

    上一篇:[Python] 文科生零基础学编程系列--对象.集合.属性.方法的基本定义 下一篇: (仍先以最简单的Excel的VBA为例,语法与Python不同,但概念和逻辑需要理解透彻) p.p1 { ...

  10. Markdown不常见功能

    推荐几个Markdown不常见功能 1.表情符号 emoji表情使用:EMOJICODE:的格式,详细列表可见 https://www.webpagefx.com/tools/emoji-cheat- ...