SQL Cursor 基本用法[用两次FETCH NEXT FROM INTO语句?]

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 table1结构如下
id    int
name  varchar(50)

declare @id int
declare @name varchar(50)
declare cursor1 cursor for         --定义游标cursor1
select * from table1               --使用游标的对象(跟据需要填入select文)
open cursor1                       --打开游标

fetch next from cursor1 into @id,@name  --将游标向下移1行,获取的数据放入之前定义的变量@id,@name中

while @@fetch_status=0           --判断是否成功获取数据
begin
update table1 set name=name+‘1‘
where id=@id                           --进行相应处理(跟据需要填入SQL文)

fetch next from cursor1 into @id,@name  --将游标向下移1行
end

close cursor1                   --关闭游标
deallocate cursor1

游标一般格式:
DECLARE 游标名称 CURSOR FOR SELECT 字段1,字段2,字段3,... FROM 表名 WHERE ...
OPEN 游标名称
FETCH NEXT FROM 游标名称 INTO 变量名1,变量名2,变量名3,...
WHILE @@FETCH_STATUS=0
        BEGIN
                  SQL语句执行过程... ...
                  FETCH NEXT FROM 游标名称 INTO 变量名1,变量名2,变量名3,...
        END
CLOSE 游标名称
DEALLOCATE 游标名称 (删除游标)

注意: 用两次 “FETCH NEXT FROM ” 是因为,第一次只是用来判断 @@FETCH_STATUS的,后面一次 “FETCH NEXT FROM ” 才是 loop用到的!也就是后面一次 是在 BEGIN END之间,是被反复执行的。。每次读取一行!

时间: 2024-10-08 14:29:14

SQL Cursor 基本用法[用两次FETCH NEXT FROM INTO语句?]的相关文章

SQL Cursor 基本用法

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 table1结构如下 id int name varchar(50) declare @id int declare @name varchar(50) declare cursor1 cursor for --定义游标cursor1 select * from table1 --使用游标的对象(

sql Cursor的用法

table1结构如下 2 id int 3 name varchar(50) 4 5 declare @id int 6 declare @name varchar(50) 7 declare cursor1 cursor for --定义游标cursor1 8 select * from table1 --使用游标的对象(跟据需要填入select文) 9 open cursor1 --打开游标 10 11 fetch next from cursor1 into @id,@name --将游标

游标SQL Cursor 基本用法

http://www.cnblogs.com/Gavinzhao/archive/2010/07/14/1777644.html 1 table1结构如下 2 id    int 3 name  varchar(50) 4  5 declare @id int 6 declare @name varchar(50) 7 declare cursor1 cursor for         --定义游标cursor1 8 select * from table1               --使

sql的游标用法举例(Cursor)

sql的游标用法举例 DECLARE @Name varchar(40), @TrueName varchar(20) Declare authors_cursor Cursor For Select Name,TrueName From Account Open authors_cursor Fetch Next From authors_cursor INTO @Name, @TrueName While @@FETCH_STATUS = 0 Begin Print @TrueName+CO

Oracle中Cursor的用法

关键字 ?概念 ?类型 ?异常处理 一 概念 游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁 盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库.这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率. 二  类型   Cursor类型包含三种: 隐式Cursor,显式Cursor和Ref Cursor(动态Cursor). 1. 隐式Cursor: 1).对于Selec

SQL CURSOR

好久没有写SQL CURSOR了,语法的有点生疏了.今天写了个玩玩.呵呵!该功能是计算客户的丢失和恢复分析信息的. /* Definition: Customer had sales before, but there is no sales in the last six month. e.g: Before or in June has sales From July to Dec – no sales Customer lost in Jan */ /* Following is the

SQL Cursor 游标的使用

Contents SQL Cursor 游标的使用 这两天在做新老系统间的data migration,接触到sql的游标,记录总结一下. 我们的需求是要求map多张表,并把计算结果分别更新到一张目标表中, 新旧系统要做A/B Testing, 所以当旧表有任何更新,比如新增,删除,改动, 都要更新到新表中. 原本我选择的方案是采用批量Insert, 但碰到一个需要插入map关系的表, 其中一个field是另外一张表刚刚插入数据的id, 因此只能用循环来解决. 看了一圈SQL的for循环,实现起

标准SQL语言的用法

原文链接:http://www.ifyao.com/2015/05/18/%E6%A0%87%E5%87%86%E7%9A%84sql%E8%AF%AD%E8%A8%80%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%E5%8F%8A%E5%A4%9A%E8%A1%A8%E8%BF%9E%E6%8E%A5/ 标准SQL语言的用法 SQL语言是目前最通用的关系数据库语言.ANSI SQL是指由美国国家标准局(ANSI)的数据库委员会制定的标准SQL语言,多数关系数据库产品

分组PARTITION BY及游标CURSOR的用法

基础数据表: select * from dbo.RecommendationChanelVersionRelation: 数据如下: 要求按照ChannelVersionID分组,对每组中的OrderId根据ID由小到大的顺序,更新为1,2,3,4,5... 方法一(分组PARTITION BY): IF OBJECT_ID('tempdb..#tempdt') IS NOT NULLDROP TABLE #tempdt;select RowNumOrderByChannelVersionID