SELECT
Những biến này phải thích hợp với những kiểu cột của những hàng được truy xuất. Chẳng hạn, bạn sẽ muốn sử
dụng một biến int để lưu trữ giá trị từ một cột int , vân vân.
Ví dụ sau đây khai báo ba biến để lưu trữ những cột ProductID, ProductName, và UnitPrice từ bảng Products:
DECLARE @MyProductID int
DECLARE @MyProductName nvarchar(40) DECLARE @MyUnitPrice money
DECLARE @MyProductName nvarchar(40) DECLARE @MyUnitPrice money Phát biểu SELECT này không thật sựđược chạy cho đến khi bạn mở con trỏ (cursor). Bạn khai báo con trỏ của bạn sử dụng phát biểu DECLARE .
Ví dụ sau đây khai báo một con trỏ có tên ProductCursor với một phát biểu SELECT mà truy xuất những cột ProductID, ProductName, và UnitPrice cho 10 sản phẩm đầu tiên từ bảng Products:
DECLARE ProductCursor CURSOR FOR SELECT ProductID, ProductName, UnitPrice FROM Products
WHERE ProductID <= 10
Bước 3: Mở con trỏ (Cursor)
Bây là lúc mở con trỏ của bạn, nó chạy phát biểu SELECT được định nghĩa trước đó trong phát biểu
DECLARE . Bạn mở một con trỏ sử dụng phát biểu OPEN. Ví dụ sau đây mở ProductCursor, và do đó cũng chạy phát biểu SELECT để truy xuất những hàng từ bảng Products:
OPEN ProductCursor
Bước 4: Tải về những hàng từ Con trỏ
Bây giờ bạn phải đọc mỗi hàng từ con trỏ của bạn. Để làm điều này, bạn sự sử dụng phát biểu FETCH . Con trỏ
của bạn có thể chứa nhiều hàng, và do đó một vòng lặp "WHILE" được đòi hỏi đểđọc lần lượt mỗi hàng. Để
xác định khi vòng lặp kết thúc, bạn có thể sử dụng hàm @@FETCH_STATUS. Hàm này trả lại một trong số
những giá trị có thể xảy ra được trình bày trong Bảng 4.1. Bảng 4.1: những giá trị trả về từ hàm @@FETCH_STATUS
Giá trị Mô tả
0 Phát biểu FETCH trả về một hàng một cách thành công .
-1 Phát biểu FETCH bị hỏng hay hàng yêu cầu bên ngoài tập hợp kết quả trả về.
-2 Hàng được tải về không hiện hữu.
Ví dụ sau đây trình bày một vòng lặp đọc từng hàng đến từ ProductCursor:
FETCH NEXT FROM ProductCursor
INTO @MyProductID, @MyProductname, @MyUnitPrice
PRINT '@MyProductID = ' + CONVERT(nvarchar, @MyProductID) PRINT '@MyProductName = ' + CONVERT(nvarchar, @MyProductName) PRINT '@MyUnitPrice = ' + CONVERT(nvarchar, @MyUnitPrice)