程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> mssql數據庫游標批量修改符合條件記錄的方法

mssql數據庫游標批量修改符合條件記錄的方法

編輯:關於SqlServer
需求:由於項目剛上傳,沒有票數,為了表現出一定的人氣,需要在一開始把各項目的票數賦一個值 ,

但每個項目不能一樣,否則容易看出問題,呵呵 。
代碼如下:

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
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved