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

SQL Server 游標核心概念與三大類型解析:從集合導向到行導向處理的橋樑

     編輯:關於SqlServer

本章前半提供 MS SQL Server 應用游標所需的必要知識與語法:游標優點、類型、作用、定義/開啟/存取/關閉/釋放/應用方法。後半介紹視圖與使用者自訂函數:視圖優點(簡化操作、提升安全性)、建立管理視圖與自訂函數、在存儲過程與批次中呼叫自訂函數。

13.1.1 游標概念與核心優勢

資料庫開發中,檢索單筆記錄常用 SELECT/INSERT。但常需從結果集逐一讀取記錄——**游標提供卓越解決方案**。

游標是資料庫中極重要的概念:提供對檢索資料操作的靈活手段。本質上,游標是**從包含多筆記錄的結果集中每次提取一筆記錄的機制**。游標總與一條 T-SQL 選擇語句關聯,由結果集(零筆、一筆或多筆記錄)與指向特定記錄的游標位置組成。決定處理結果集時,必須宣告指向該結果集的游標。如曾用 C 語言處理檔案,游標如檔案控制代碼:檔案開啟成功,控制代碼即代表該檔案。游標同理,能以類似傳統程式讀取平面檔案的方式處理基礎表結果集,將表資料以平面檔案形式呈現給程式。

關係資料庫管理系統本質是面向集合的,MS SQL Server 無描述表中單一記錄的表達形式(除非用 WHERE 限制僅選一筆)。**必須借助游標進行面向單筆記錄的資料處理。**

由此可見,游標允許應用程式對 SELECT 返回的行結果集中每一行執行相同或不同操作,而非一次對整個結果集執行同一操作;提供基於游標位置對表資料刪除/更新能力;**將面向集合的資料庫管理系統與面向行的程式設計連結,使兩種資料處理方式能夠溝通。**

13.1.2 三大游標類型

MS SQL Server 支援三類游標:

  1. Transact-SQL 游標:由 DECLARE CURSOR 定義,主要用於 T-SQL 腳本、存儲過程、觸發器。在伺服器端由客戶端發送的 T-SQL 語句或批次/存儲過程/觸發器中的 T-SQL 管理。**不支援提取資料區塊或多行資料**
  2. API 游標:支援 OLE DB、ODBC、DB_library 中的游標函數,主要用於伺服器端。客戶端應用呼叫 API 游標函數時,OLE DB 提供者/ODBC 驅動程式/DB_library DLL 將請求傳送給伺服器處理
  3. 客戶端游標:僅在客戶端快取結果集時使用。預設結果集用於客戶端快取整個結果集。**僅支援靜態游標,不支援動態游標**。因伺服器游標不支援所有 T-SQL 語句/批次,客戶端游標常作輔助。一般情況下伺服器游標支援絕大多數操作

API 游標與 T-SQL 游標用於伺服器端,稱伺服器游標或後台游標;客戶端游標稱前台游標。本章重點講述伺服器(後台)游標。

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