Con trỏ cuộn (Scrolling Cursor)

Một phần của tài liệu Giao_trinh_SQL_server pptx (Trang 110 - 111)

Cỏc con trỏ cho chỳng ta một sự lựa chọn về việc chỳng ta di chuyển qua cỏc bộ của quan hệ như thế nào. Sự lựa chọn mặc định và phổ biến nhất là bắt đầu từ đầu và lấy ra cỏc bộ theo thứ tự, cho đến khi kết thỳc. Tuy nhiờn, cú những thứ tự khỏc mà theo đú cỏc bộ cú thể được lấy ra và cỏc bộ cú thể được quột vài lần trước khi con trỏ bị đúng. Để lợi dụng những tự chọn này, chỳng ta cần làm hai việc sau:

1. Khi khai bỏo một con trỏ, đặt từ khúa SCROLL đằng trước từ khúa CURSOR. Thay đổi này núi với hệ thống SQL rằng con trỏ cú thể được sử dụng ở một kiểu khỏc với việc di chuyển về phớa trước theo trật tự của cỏc bộ.

2. Trong một cõu lệnh FETCH, theo sau từ khúa FETCH là một trong nhiều tựy chọn cho biết tỡm bộ mong muốn ở đõu. Những tựy chọn đú là:

(a) NEXT hoặc PRIOR để nhận bản ghi tiếp theo hoặc phớa trước theo thứ tự. Nhắc lại rằng bản ghi này cú liờn quan với vị trớ hiện thời của con trỏ. NEXT là mặc định nếu khụng chỉ ra tựy chọn nào, và nú là một lựa chọn thường xuyờn.

(b) FIRST hoặc LAST để nhận bản ghi đầu tiờn hoặc bản ghi cuối cựng theo thứ tự.

(c) RELATIVE theo sau là một số nguyờn dương hoặc õm, nú chỉ ra bao nhiờu bản ghi được di chuyển tới (nếu số nguyờn là dương) hoặc lui (nếu õm) theo thứ tự. Cho vớ dụ, RELATIVE 1 đồng nghĩa với NEXT, và RELATIVE -1 đồng nghĩa với PRIOR.

(d) ABSOLUTE theo sau là một số nguyờn dương hoặc õm, nú chỉ ra vị trớ của bản ghi mong muốn đếm từ phớa trước (nếu dương) hoặc phớa sau (nếu õm). Cho vớ dụ, ABSOLUTE 1 đồng nghĩa với FIRST và ABSOLUTE –1 đồng nghĩa với LAST.

Vớ dụ 3.8: Chỳng ta hóy viết lại hàm trong Hỡnh 3.5 bắt đầu ở bản ghi cuối cựng và di chuyển lựi lại thụng qua một danh sỏch cỏc bản ghi. Đầu tiờn, chỳng ta cần khai bỏo con trỏ execCursor là cuộn được, điều này chỳng ta làm bằng cỏch thờm từ khúa SCOLL vào dũng (6), như sau:

6) EXEC SQL DECLARE execCursor SCROLL CURSOR FOR NHÂNVIấN;

Hơn nữa, chỳng ta cần khởi tạo việc lấy về những bản ghi với một cõu lệnh FETCH LAST, và trong vũng lặp chỳng ta sử dụng FETCH PRIOR. Vũng lặp từ dũng (8) đến dũng (14) trong Hỡnh 3.5 được viết lại như trong Hỡnh 3.6. Người đọc sẽ khụng cho rằng cú ưu điểm nào khi đọc những bản ghi theo thứ tự ngược với thứ tự mà chỳng được lưu trữ trong NHÂNVIấN.

EXEC SQL FETCH LAST FROM execCursor INTO:Họđệm1,:Tờn1, : MósốNV1,:ngaysinh1,:Địachỉ1,:Giớitớnh1,:Luong1,: MósụNGS1,:MósốĐV1 ;

while (1) {

/* giống nhưcỏc dũng từ (10) đến (14) */

EXEC SQL FETCH PRIOR FROM execCursor INTO:Luong1; }

Hỡnh 8.6: Đọc LÙI cỏc bộ NHÂNVIấN

Một phần của tài liệu Giao_trinh_SQL_server pptx (Trang 110 - 111)