mssql數(shù)據(jù)庫游標批量修改符合條件記錄的方法
更新時間:2014年05月15日 16:26:52 作者:
這篇文章主要介紹了mssql數(shù)據(jù)庫游標如何批量修改符合條件的記錄,需要的朋友可以參考下
需求:由于項目剛上傳,沒有票數(shù),為了表現(xiàn)出一定的人氣,需要在一開始把各項目的票數(shù)賦一個值 ,
但每個項目不能一樣,否則容易看出問題,呵呵 。
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; --讀取第一行數(shù)據(jù)(將Id放到@Id變量中)
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @Id; --打印數(shù)據(jù)(Id)
UPDATE dbo.kinpanAwardProject SET ProTicketCount = cast( floor(rand()*30) as int)+40 WHERE Id = @Id; --更新數(shù)據(jù),使用隨機數(shù)。
FETCH NEXT FROM My_Cursor INTO @Id; --讀取下一行數(shù)據(jù)(將查詢的Id放到@Id變量中)
END
CLOSE My_Cursor; --關(guān)閉游標
DEALLOCATE My_Cursor; --釋放游標
GO
還有一種用法,可能更加好,我認為,如果不需要對id進行判斷的話,在修改時就不需要where查詢,直接修改游標當前位置會更快。
DECLARE My_Cursor CURSOR --定義游標
FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游標中
OPEN My_Cursor; --打開游標
FETCH NEXT FROM My_Cursor ; --讀取第一行數(shù)據(jù)
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; --讀取下一行數(shù)據(jù)
END
CLOSE My_Cursor; --關(guān)閉游標
DEALLOCATE My_Cursor; --釋放游標
GO
但每個項目不能一樣,否則容易看出問題,呵呵 。
復制代碼 代碼如下:
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; --讀取第一行數(shù)據(jù)(將Id放到@Id變量中)
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @Id; --打印數(shù)據(jù)(Id)
UPDATE dbo.kinpanAwardProject SET ProTicketCount = cast( floor(rand()*30) as int)+40 WHERE Id = @Id; --更新數(shù)據(jù),使用隨機數(shù)。
FETCH NEXT FROM My_Cursor INTO @Id; --讀取下一行數(shù)據(jù)(將查詢的Id放到@Id變量中)
END
CLOSE My_Cursor; --關(guān)閉游標
DEALLOCATE My_Cursor; --釋放游標
GO

還有一種用法,可能更加好,我認為,如果不需要對id進行判斷的話,在修改時就不需要where查詢,直接修改游標當前位置會更快。
復制代碼 代碼如下:
DECLARE My_Cursor CURSOR --定義游標
FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游標中
OPEN My_Cursor; --打開游標
FETCH NEXT FROM My_Cursor ; --讀取第一行數(shù)據(jù)
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; --讀取下一行數(shù)據(jù)
END
CLOSE My_Cursor; --關(guān)閉游標
DEALLOCATE My_Cursor; --釋放游標
GO
相關(guān)文章
安裝SQL2005時出現(xiàn)的版本變更檢查SKUUPGRADE=1問題的解決方法
這篇文章主要介紹了安裝SQL2005時出現(xiàn)的版本變更檢查SKUUPGRADE=1問題的解決方法,需要的朋友可以參考下2015-01-01SQLServer2005 Output子句獲取剛插入的ID值
SQLServer2005的Output子句獲取剛插入的ID值2009-08-08SQL SERVER 2005數(shù)據(jù)庫還原的方法
這篇文章主要介紹了SQL SERVER 2005數(shù)據(jù)庫還原的方法,有需要的朋友可以參考一下2013-11-11MSSQL2005在networkservice權(quán)限運行附加數(shù)據(jù)庫報(Microsoft SQL Server,錯誤:
無法打開物理文件 "XXXXXXXXXXXXX"。操作系統(tǒng)錯誤 5:"5(拒絕訪問。)"。 (Microsoft SQL Server,錯誤: 5120)2012-11-11讓sql2005運行在獨立用戶下出現(xiàn) WMI 提供程序錯誤的解決方式
您還有 %1 的時間注銷,如果您 在此時間到之后仍沒有注銷,您的會話 將會斷開,任何打開的文件或設(shè)備 就可能丟失數(shù)據(jù)2012-11-11簡單有用的SQL腳本 (行列互轉(zhuǎn),查詢一個表內(nèi)相同紀錄等)
本文推薦的SQL腳本都是很實用的哦,學會了,對在工作中得心應(yīng)手,一起來學習學習吧。2010-04-04SQLSERVER2005 中樹形數(shù)據(jù)的遞歸查詢
在園子里看到一個文章,涉及到樹形數(shù)據(jù)的遞歸查詢,覺得有更好的方法,就隨手寫一個,以備用之2011-10-10