Cách sử dụng CURSOR trong SQL Server, vòng lặp while trong MS-SQL

Thảo luận trong 'Kiến thức lập trình SQL & MySQL' bắt đầu bởi admin, 13/10/16.

  1. admin

    admin Phạm Công Sơn Thành viên BQT

    Tham gia ngày:
    22/5/13
    Bài viết:
    3,801
    Đã được thích:
    747
    Điểm thành tích:
    113
    Giới tính:
    Nam
    1. CURSOR là gì?
    • Trong c# khi duyệt dữ liệu ta có vòng lặp while, for, do while,.. để duyệt dữ liệu mảng, còn trong SQL Server ta dó vòng lặp Coursor while để duyệt dữ liệu mảng.
    vong-lap-coursor-trong-sql-server.jpg
    Coursor trong SQL Server​

    2. Cách sử dụng vong lặp Coursor
    • Xem qua ví dụ và đọc chú giải dưới để hiểu rõ hơn.
    Mã:
           declare mycs cursor for select col1,col2 from tbl_mytable
           open mycs
           declare @mycol1 nvarchar(100)
           declare @mycol2 nvarchar(100)
           fetch next from mycs into @mycol1,@mycol2
           while @@FETCH_STATUS=0
           begin
                    delete tbl_mytable2 where coltb2=@mycol1 and coltb3=@mycol2
                
                    fetch next from mycs into @mycol1,@mycol2
          end
          close mycs
          deallocate mycs
    
    Chú giải:
    • Câu lệnh dưới nghĩa là : tạo mới 1 cursor với tên mycs và gán toàn bọ dữ liệu tại câu lệnh select cho cursor này.
    Mã:
           declare mycs cursor for select col1,col2 from tbl_mytable
    
    • Mở cursor lên
    Mã:
           open mycs
    
    • Khai báo biến để lấy dữ liệu khi chạy vòng lặp cursor.
    Mã:
           declare @mycol1 nvarchar(100)
           declare @mycol2 nvarchar(100)
    
    • Chạy cursor khi nào dữ liệu =0 thì thôi, mỗi lần chạy dữ liệu sẽ được gắn cho các biên @mycol1,@mycol2 theo các thứ tự trên mới select tưng ứng : @mycol1=col1, @mycol2=col2
    Mã:
           fetch next from mycs into @mycol1,@mycol2
           while @@FETCH_STATUS=0
    
    • Thực thi các câu lệnh trong vòng lặp, ví dụ dưới ta thực hiện lệnh delete 1 table với giá trị tương ứng,...
    • Sau khi thực hiện lệnh xong, ta tiếp tục duyệt tiếp dữ liệu bằng câu lệnh: fetch next from .... into.....
    Mã:
        begin
                    delete tbl_mytable2 where coltb2=@mycol1 and coltb3=@mycol2
                    fetch next from mycs into @mycol1,@mycol2
          end
    
    • Đóng cursor lại bằng lệnh : close ....
    • Giải phóng cursor khỏi bộ nhớ bằng lệnh : deallocate ....
    Mã:
          close mycs
          deallocate mycs
    
     
    Cảm ơn đã xem bài:

    Cách sử dụng CURSOR trong SQL Server, vòng lặp while trong MS-SQL

    Chỉnh sửa cuối: 13/11/16
    Đang tải...


Chủ để tương tự : Cách sử
Diễn đàn Tiêu đề Date
Rao Vặt Toàn Quốc Cách sử dụng dịch vụ Chặn cuộc gọi (Call Blocking) của VinaPhone Thứ ba lúc 6:55 PM
Rao Vặt Toàn Quốc Cách sử dụng quả cân chuẩn Thứ bảy lúc 4:53 PM
Rao Vặt Toàn Quốc Cách nhận dạng rượu pha cồn có hại cho sức khỏe 23/3/17
Rao Vặt Toàn Quốc Cách chăm sóc sức khỏe của người có tiền 22/3/17
Rao Vặt Toàn Quốc Những hư hỏng thường thấy ở máy bơm hỏa tiễn và cách sửa 21/3/17

: sql server

Like và Share ủng hộ ITSEOVN