【IT168 技術】遊標(cursor)是系統為使用者開設的一個資料緩衝區,存放SQL語句的執行結果。每個遊標區都有一個名字。使用者可以用SQL語句逐一從遊標中擷取記錄,並賦給主變數,交由主語言進一步處理。
關聯式資料庫中的操作會對整個行集起作用。由 SELECT 語句返回的行集包括滿足該語句的 WHERE 子句中條件的所有行。這種由語句返回的完整行集稱為結果集。應用程式,特別是互動式聯機應用程式,並不總能將整個結果集作為一個單元來有效地處理。這些應用程式需要一種機制以便每次處理一行或一部分行。遊標就是提供這種機制的對結果集的一種擴充。
遊標通過以下方式來擴充結果處理:
允許定位在結果集的特定行。
從結果集的當前位置檢索一行或一部分行。
支援對結果集中當前位置的行進行資料修改。
為由其他使用者對顯示在結果集中的資料庫資料所做的更改提供不同層級的可見度支援。
提供指令碼、預存程序和觸發器中用於訪問結果集中的資料的 Transact-SQL 陳述式。
請求遊標
MicrosoftSQL Server 支援兩種請求遊標的方法:
Transact-SQL
Transact-SQL 語言支援在 ISO 遊標文法之後制定的用於使用遊標的文法。
資料庫應用程式編程介面(API)遊標函數
SQL Server 支援以下資料庫 API 的遊標功能:
ADO(Microsoft ActiveX 資料對象)
OLE DB
ODBC(開放式資料庫連接)
應用程式不能混合使用這兩種請求遊標的方法。已經使用 API 指定遊標行為的應用程式不能再執行 Transact-SQL DECLARE CURSOR 語句請求一個 Transact-SQL 遊標。應用程式只有在將所有的 API 遊標特性設定回預設值後,才可以執行 DECLARE CURSOR。
如果既未請求 Transact-SQL 遊標也未請求 API 遊標,則預設情況下 SQL Server 將嚮應用程式返回一個完整的結果集,這個結果集稱為預設結果集。
遊標進程
Transact-SQL 遊標和 API 遊標有不同的文法,但下列一般進程適用於所有 SQL Server 遊標:
1、將遊標與 Transact-SQL 陳述式的結果集相關聯,並且定義該遊標的特性,例如是否能夠更新遊標中的行。
2、執行 Transact-SQL 陳述式以填充遊標。
3、從遊標中檢索您想要查看的行。從遊標中檢索一行或一部分行的操作稱為提取。執行一系列提取操作以便向前或向後檢索行的操作稱為滾動。
4、根據需要,對遊標中當前位置的行執行修改操作(更新或刪除)。
5、關閉遊標。