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
    Tham gia ngày:
    22/5/13
    Bài viết:
    4,997
    Đã được thích:
    1,216
    Đ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: 14/12/18
  2. dieuhoa3
    Tham gia ngày:
    7/9/15
    Bài viết:
    182
    Đã được thích:
    6
    Điểm thành tích:
    18
    Giới tính:
    Nam
    nghe cũng khó đấy bạn nhỉ
     
  3. bimbon01
    Tham gia ngày:
    6/7/17
    Bài viết:
    5
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    hay...tks bác :):):)
     
  4. HoaPhuHoaAn
    Tham gia ngày:
    12/4/19
    Bài viết:
    28
    Đã được thích:
    1
    Điểm thành tích:
    6
    Giới tính:
    Nữ
    khó hiểu quá ạ, phải tìm hiểu nhiều hơn mới được
     
  5. lelan2297
    Tham gia ngày:
    16/4/19
    Bài viết:
    24
    Đã được thích:
    0
    Điểm thành tích:
    6
    Giới tính:
    Nữ
    Phần này khó hiểu thật
     
  6. minhtranseo
    Tham gia ngày:
    13/8/19
    Bài viết:
    20
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    khó hiểu quá ạ, nhưng vẩn cảm ơn ad nhiều hihihi
     
  7. Hoàng Phương An
    Tham gia ngày:
    12/6/19
    Bài viết:
    26
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nữ
    hay ghê, cảm ơn thớt nhiều nhé ạ
     
  8. hochoiseo
    Tham gia ngày:
    26/9/19
    Bài viết:
    21
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nữ
    khó hiểu quá ạ, phải tìm hiểu nhiều hơn mới được
     
  9. hochoiseo
    Tham gia ngày:
    26/9/19
    Bài viết:
    21
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nữ
    khó hiểu quá ạ, phải tìm hiểu nhiều hơn mới được
     
  10. thientamthinh
    Tham gia ngày:
    11/6/19
    Bài viết:
    17
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    khó hiểu quá ạ, nhưng vẩn cảm ơn ad nhiều hihihi
     
  11. noithatdungphat
    Tham gia ngày:
    27/9/19
    Bài viết:
    17
    Đã được thích:
    1
    Điểm thành tích:
    3
    Giới tính:
    Nam
    bài viết rất hữu ích, cám ơn tác giả đã chia sẻ
     
  12. Thompson Clegg
    Tham gia ngày:
    22/11/19
    Bài viết:
    19
    Đã được thích:
    1
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Cảm ơn bạn đã chia sẻ bài viết hữu ích
     


Chủ để tương tự : Cách sử
Diễn đàn Tiêu đề Date
Kiến thức lập trình SQL & MySQL Convert cách chuyển số dương thành số âm trong sql server như thế nào? 12/10/19
Kiến thức lập trình SQL & MySQL Cách convert datetime dạng dd/MM/YYYY hh:mm:ss trong SQL server 21/11/17
Kiến thức lập trình SQL & MySQL Cách replace ntext trong sql server 13/6/17
Kiến thức lập trình SQL & MySQL Cách restore database file .tmp .bak .trn trong sql server mới nhất 14/9/16
Kiến thức lập trình SQL & MySQL Lỗi : drop database statements are disabled cách xử lý 24/3/16