基本前向游標
通常,你可能希望避免使用遊標,因為它們會對效能產生負面影響。但是在某些特殊情況下,你可能需要按記錄迴圈遍歷資料記錄並執行某些操作。
DECLARE @orderId AS INT
-- here we are creating our cursor, as a local cursor and only allowing
-- forward operations
DECLARE rowCursor CURSOR LOCAL FAST_FORWARD FOR
-- this is the query that we want to loop through record by record
SELECT [OrderId]
FROM [dbo].[Orders]
-- first we need to open the cursor
OPEN rowCursor
-- now we will initialize the cursor by pulling the first row of data, in this example the [OrderId] column,
-- and storing the value into a variable called @orderId
FETCH NEXT FROM rowCursor INTO @orderId
-- start our loop and keep going until we have no more records to loop through
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @orderId
-- this is important, as it tells SQL Server to get the next record and store the [OrderId] column value into the @orderId variable
FETCH NEXT FROM rowCursor INTO @orderId
END
-- this will release any memory used by the cursor
CLOSE rowCursor
DEALLOCATE rowCursor