>  기사  >  데이터 베이스  >  mssql数据库游标批量修改符合条件的记录

mssql数据库游标批量修改符合条件的记录

WBOY
WBOY원래의
2016-06-07 15:56:141115검색

//需求:由于项目刚上传,没有票数,为了表现出一定的人气,需要在一开始把各项目的票数赋一个值 , 但每个项目不能一样,否则容易看出问题,呵呵 。 DECLARE @Id varchar(50) DECLARE My_Cursor CURSOR --定义游标FOR (SELECT Id FROM dbo.kinpanAwardProje

//需求:由于项目刚上传,没有票数,为了表现出一定的人气,需要在一开始把各项目的票数赋一个值 ,

但每个项目不能一样,否则容易看出问题,呵呵 。

DECLARE @Id varchar(50) 
DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT Id FROM dbo.kinpanAwardProject where session=9) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO @Id; --读取第一行数据(将Id放到@Id变量中)
WHILE @@FETCH_STATUS = 0
    BEGIN
        PRINT @Id; --打印数据(Id)
        UPDATE dbo.kinpanAwardProject SET ProTicketCount = cast( floor(rand()*30) as int)+40 WHERE Id = @Id; --更新数据,使用随机数。
        FETCH NEXT FROM My_Cursor INTO @Id; --读取下一行数据(将查询的Id放到@Id变量中)
    END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO

 

\

还有一种用法,可能更加好,我认为,如果不需要对id进行判断的话,在修改时就不需要where查询,直接修改游标当前位置会更快。

DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor ; --读取第一行数据
WHILE @@FETCH_STATUS = 0
    BEGIN
        --UPDATE dbo.MemberAccount SET UserName = UserName + 'A' WHERE CURRENT OF My_Cursor; --更新
        --DELETE FROM dbo.MemberAccount WHERE CURRENT OF My_Cursor; --删除
        FETCH NEXT FROM My_Cursor; --读取下一行数据
    END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:QUERY_REWRITE_ENABLED다음 기사:数据挖掘之定义