首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 顯式游標完整語法:宣告、開啟、迴圈、關閉與釋放

     編輯:關於SqlServer

標準流程

-- 1. 宣告游標
DECLARE MyCursor CURSOR FOR 
    SELECT TOP 5 FBookName, FBookCoding FROM TBookInfo;

-- 2. 開啟游標
OPEN MyCursor;

-- 3. 宣告接收變數
DECLARE @BookName NVARCHAR(2000), @BookCoding NVARCHAR(2000);

-- 4. 取第一筆
FETCH NEXT FROM MyCursor INTO @BookName, @BookCoding;

-- 5. 迴圈處理
WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT 'name: ' + @BookName;
    FETCH NEXT FROM MyCursor INTO @BookName, @BookCoding;
END

-- 6. 關閉與釋放
CLOSE MyCursor;
DEALLOCATE MyCursor;

完整範例(含暫存表測試)

CREATE TABLE #a (id VARCHAR(20), name VARCHAR(20));
INSERT INTO #a VALUES ('1','jack'), ('2','join'), ('3','make');

DECLARE mycursor CURSOR FOR SELECT * FROM #a;
OPEN mycursor;
DECLARE @id VARCHAR(20), @name VARCHAR(20);
FETCH NEXT FROM mycursor INTO @id, @name;
WHILE @@FETCH_STATUS = 0
BEGIN
    SELECT @id, @name;
    FETCH NEXT FROM mycursor INTO @id, @name;
END
CLOSE mycursor;
DEALLOCATE mycursor;

效能警示

游標效能警示

游標屬逐列操作(RBAR),資源消耗極大。SQL 引擎優化對象是集合,能用集合操作(JOIN/WHERE/窗口函數)絕不使用游標。大量資料下游標是效能殺手。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved