游标

游标分为客户端游标和服务器端游标。Sql通过游标可以对一个结果集进行逐行处理。对于使用服务器端游标的过程有:声明、打开、读取、关闭、释放。

1 声明游标

1.1 SQL-92标准的声明

Declare cursor_name [insensitive][scroll] cursor

For select_statement

[for { readonly|update [of column_name[,…n]]}]

Insensitive:使用查询结果的副本

如:

declare xs_cur1 cursor

for

select* from xs

where stu_major='计算机'

for read only

1.2 T-SQL扩展的游标声明

Declare cursor_name Cursor

[local | global]                                      /*游标作用域*/

[forward_only | scroll]                        /*游标移动方向*/

[static| keyset | dynamic | fast_forward]   /*游标类型*/

[read_only | scroll_locks | optimistic]   /*访问属性*/

[tupe_warning]                               /*类型转换警告信息*/

For select_statement

[for update [of column_name[,…n]]     /*可修改的列*/

Static:静态游标,只读

Keyset:键集驱动游标,可以通过键集驱动游标修改基本表中非关键字列的值。

dynamic :动态游标

fast_forward:只进游标

declare xs_cur2 cursor

dynamic

for

select* from xs

where stu_major='计算机'

2 打开游标

Open {{[global] cursor_name}| cursor_variable_name}

例子:/*定义游标,然后打开,输出其行数*/

declare xs_cur3 cursor

local scroll scroll_locks

for

select stu_id,stu_name,stu_total_credit    from xs

for update of stu_total_credit

open xs_cur3

select 'the number of rows'=@@cursor_rows

3 读取数据

游标打开后,就可以使用fetch语句从中读取数据。Fetch语句的格式为:

Fetch

[next|prior|first|last|absolute{n|@nvar}|relative{n|@nvar}]

From {{[global] cursor_name}| cursor_variable_name}

Into @variable_name[,….n]

如:fetch first from xs_cur2

注意:fetch语句执行的状态保存在全局变量@@Fetch_status中,其值为0,表示执行成功;为-1,表示所要读取的行不在结果集中;为-2,表示被提取的行已经不在(已被删除)。

4 关闭游标

Close  {{[global] cursor_name}| cursor_variable_name}

5 释放游标

Deallocate {{[global] cursor_name}| cursor_variable_name}

SQLServer 游标 (A)的更多相关文章

  1. Sqlserver游标复习

    经常写存储过程,但今天在游标使用过程中还是疏忽了一些事情,执行过程中一直执行不下去,后来直接sqlserver挂了,教训啊! 代码虽简单,望铭记: Create PROCEDURE [dbo].[te ...

  2. SqlServer游标的创建与使用

    前言 大家都对SqlServer视图.存储过程.触发器的创建与使用有一定的了解了,我们来看下什么是游标,怎么使用,什么时候用. SqlServer视图的创建与使用 SqlServer存储过程的创建与使 ...

  3. sqlserver 游标的使用

    declare @temp_temp uniqueidentifier--临时变量 DECLARE aaa CURSOR for select Id from A ------------------ ...

  4. SqlServer游标简介

    游标实例:             Declare MyCusror Cursor Scroll For Select * From Master_Goods Order By GoodsID Ope ...

  5. sqlserver 游标

    DECLARE ChangeInvCodeCursor CURSOR FOR SELECT A.name AS tablecolumn,C.name AS tablename FROM sys.col ...

  6. SQLServer游标(Cursor) (B)

    游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力.我们可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许 ...

  7. SQLserver游标原理和使用方法

    在数据库开发过程中,当你检索的数据只是一条记录时,你所编写的事务语句代码往往使用SELECT INSERT 语句.但是我们常常会遇到这样情况,即从某一结果集中逐一地读取一条记录.那么如何解决这种问题呢 ...

  8. (转)sqlserver游标概念与实例全面解说

    首先声明:该文章转自http://www.cnblogs.com/wudiwushen/archive/2010/03/30/1700925.html  的博客 引言  我们先不讲游标的什么概念,步骤 ...

  9. SQLServer游标详解

    一.游标概念 我们知道,关系数据库所有的关系运算其实是集合与集合的运算,它的输入是集合输出同样是集合,有时需要对结果集逐行进行处理,这时就需要用到游标.我们对游标的使用一本遵循“五步法”:声明游标—& ...

随机推荐

  1. ArrayList实现删除重复元素(元素不是对象类型的情况)

    package 集合; import java.util.ArrayList;import java.util.Iterator; /* * 去除ArrayList里面的重复元素 *  * */pub ...

  2. HTML5的视频和音频

    1.HTML5视频 HTML5 规定了一种通过 video 元素来包含视频的标准方法. <!DOCTYPE html> <html> <head> <meta ...

  3. 团队作业week9 scenario testing

    1.How do you expect different personas to use your software? What’s their need and their goals,  how ...

  4. 人工神经网络NN

    [面向代码]学习 Deep Learning系列 http://blog.csdn.net/coolluyu/article/details/20214617 正则化的最小二乘法 深入浅出LSTM神经 ...

  5. CNUOJ 0486 800401反质数

    难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 将正整数 x 的约数个数表示为 g(x).例如,g(1)=1,g(4)=3, g ...

  6. myeclipse项目上出现红色叹号

    右键选中项目:build path→configure build path (由于的我是在问题解决之后发表的博客,所以jar包上面的红色叉子不见了,只要选中红色的jar包,然后选择‘Remove’按 ...

  7. VirtualBox + CentOS 使用 NAT + Host-Only 方式联网

    之前一直使用 VMware 作为虚拟机,这几天看<跟阿铭学Linux>,里面用的是虚拟机是 Oracle VirtualBox,也跟着安装配置一个,但是比较坑的是照着上面的配置折腾了很久才 ...

  8. Oracle数据库基础知识1

    DDL语句 1.表的创建 CREATE TABLE table_name(); 例如: CREATE TABLE USER_E( id NUMBER (5), name VARCHAR(20), ge ...

  9. ECshop通过文章分类的ID实现不同模板

    当客户需要想要用不同模板来实现文章页面时,文章就需要实现调用不同模板的内容,着手点就是它的分类ID.直接通过分类ID来判断一下,现在68ecshop技术来告诉你该怎么做 方法如下所示: 一.打开根目录 ...

  10. PDO和消息队列的一点个人理解

    什么是消息队列,百度百科说,···消息队列····是在消息的传输过程中保存消息的容器. 看着网上林林总总的文章,都说是为了应对高并发,处理数据量超级大的一种数据容器,也可以说是利用各种方式,先把数据存 ...