FETCH [ NEXT | PRIOR | FIRST | LAST
| ABSOLUTE { n | @nvar } | RELATIVE { n | @nvar } ]
FROM [ GLOBAL ] cursor_name
[ INTO @variable_name [ ,...n ] ]
- NEXT : Chuyển sang mẫu tin kế tiếp.
- PRIOR : Chuyển về mẫu tin trước đó.
- FIRST : Chuyển về mẫu tin đầu tiên.
- LAST : Chuyển đến mẫu tin cuối cùng.
- ABSOLUTE {n | @nvar} : Nếu n or @nvar > 0, tìm đến dòng thứ n tính từ dòng đầu tiên đếm xuống trong tập mẫu tin. Nếu n or @nvar < 0, tìm đến dòng thứ n tính từ dòng cuối cùng đếm lên. Nếu n or @nvar = 0, chuyển đến vùng BOF và không có giá trị trả về. Hằng số n phải là số nguyên và biến @nvar phải thuộc kiểu smallint, tinyint, hoặc int. Không sử dụng phương thức ABSOLUTE cho kiểu DYNAMIC.
- RELATIVE {n | @nvar} : Nếu n hoặc @nvar > 0, chuyển xuống n dòng tính từ dòng kề dưới dòng hiện hành. Nếu n or @nvar < 0, Chuyển lên n dòng trước dòng hiện hành. Nếu n or @nvar = 0, trả về dòng hiện hành.
- cursor_name: Tên cursor đang mở. Nếu tồn tại cursor cục bộ và cursor toàn cục có cùng tên thì tên cursor được sử dụng sẽ là cursor cục bộ nếu không có từ khóa GLOBAL.
- INTO @varname[,...n] : Danh sách biến cục bộ nhận dữ liệu tương ứng từ các cột trên mẫu tin hiện hành, theo thứ tự từ trái sang phải. Số biến phải bằng số cột đã liệt kê trong câu lệnh Select khi tạo Cursor. Kiểu dữ liệu của mỗi biến phải tương thích với kiểu dữ liệu của cột hoặc được hổ trợ chuyển kiểu ngầm định theo kiểu của cột.
Kiểm tra kết quả của lệnh FETCH: Sử dụng hàm @@FETCH_STATUS sau lệnh FETCH. Hàm trả về một trong 3 giá trị:
0: Nếu lệnh FETCH chuyển đến 1 mẫu tin trong danh sách.
-1: Nếu lệnh FETCH chuyển đến vùng BOF hoặc EOF
-2: Nếu chuyển đến 1 dòng đã bị xóa trên Server (Keyset).
Ví dụ: CREATE proc sprcur
As
Declare @ms char(6), @ten varchar(30)
Declare a cursor SCROLL for select mssv, tensv from sinhvien
Open a
Fetch next from a into @ms, @ten
While @@fetch_status = 0
Begin Print @ms + '-' + @ten Fetch Next from a into @ms, @ten
End
Close a
Deallocate a
» Tin mới nhất:
» Các tin khác: