(轉)SQL中的迴圈、for迴圈、遊標

來源:互聯網
上載者:User

標籤:tle   nbsp   blog   oca   網上   也有   操作   研究   實現   

我們使用SQL語句處理資料時,可能會碰到一些需要迴圈遍曆某個表並對其進行相應的操作(添加、修改、刪除),這時我們就需要用到咱們在編程中常常用的for或foreach,但是在SQL中寫迴圈往往顯得那麼吃力,翻遍網上的資料,找不到幾個正確的並能執行的迴圈處理資料的方法,在這裡,我來給大家分享一下!

要SQL中寫類似for迴圈,我這裡使用的是SQL中的遊標來實現,當然SQL中也有for loop、while do等,我這裡僅以使用遊標方式來進行樣本,其它的方式大家有興趣可以研究一下,成功的同學可以在下面回複一下並把代碼貼出來,與大家分享!

閑話少說,上樣本:

1. 利用遊標迴圈更新、刪除MemberAccount表中的資料

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

2. 利用遊標迴圈更新MemberService表中的資料(更新每個使用者所購買服務的時間)

DECLARE @UserId varchar(50) 
DECLARE My_Cursor CURSOR --定義遊標
FOR (SELECT UserId FROM dbo.MemberAccount) --查出需要的集合放到遊標中
OPEN My_Cursor; --開啟遊標
FETCH NEXT FROM My_Cursor INTO @UserId; --讀取第一行資料(將MemberAccount表中的UserId放到@UserId變數中)
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @UserId; --列印資料(列印MemberAccount表中的UserId)
UPDATE dbo.MemberService SET ServiceTime = DATEADD(Month, 6, getdate()) WHERE UserId = @UserId; --更新資料
FETCH NEXT FROM My_Cursor INTO @UserId; --讀取下一行資料(將MemberAccount表中的UserId放到@UserId變數中)
END
CLOSE My_Cursor; --關閉遊標
DEALLOCATE My_Cursor; --釋放遊標
GO

 

上面的兩個例子應該可以解決我們在SQL中使用迴圈的所有需求,如果不能滿足,自己可以根據以上兩個樣本進行擴充,希望能幫各位解決一些類似的問題。

(轉)SQL中的迴圈、for迴圈、遊標

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.