本章前半提供 MS SQL Server 應用游標所需的必要知識與語法:游標優點、類型、作用、定義/開啟/存取/關閉/釋放/應用方法。後半介紹視圖與使用者自訂函數:視圖優點(簡化操作、提升安全性)、建立管理視圖與自訂函數、在存儲過程與批次中呼叫自訂函數。
資料庫開發中,檢索單筆記錄常用 SELECT/INSERT。但常需從結果集逐一讀取記錄——**游標提供卓越解決方案**。
游標是資料庫中極重要的概念:提供對檢索資料操作的靈活手段。本質上,游標是**從包含多筆記錄的結果集中每次提取一筆記錄的機制**。游標總與一條 T-SQL 選擇語句關聯,由結果集(零筆、一筆或多筆記錄)與指向特定記錄的游標位置組成。決定處理結果集時,必須宣告指向該結果集的游標。如曾用 C 語言處理檔案,游標如檔案控制代碼:檔案開啟成功,控制代碼即代表該檔案。游標同理,能以類似傳統程式讀取平面檔案的方式處理基礎表結果集,將表資料以平面檔案形式呈現給程式。
關係資料庫管理系統本質是面向集合的,MS SQL Server 無描述表中單一記錄的表達形式(除非用 WHERE 限制僅選一筆)。**必須借助游標進行面向單筆記錄的資料處理。**
由此可見,游標允許應用程式對 SELECT 返回的行結果集中每一行執行相同或不同操作,而非一次對整個結果集執行同一操作;提供基於游標位置對表資料刪除/更新能力;**將面向集合的資料庫管理系統與面向行的程式設計連結,使兩種資料處理方式能夠溝通。**
MS SQL Server 支援三類游標:
DECLARE CURSOR 定義,主要用於 T-SQL 腳本、存儲過程、觸發器。在伺服器端由客戶端發送的 T-SQL 語句或批次/存儲過程/觸發器中的 T-SQL 管理。**不支援提取資料區塊或多行資料**API 游標與 T-SQL 游標用於伺服器端,稱伺服器游標或後台游標;客戶端游標稱前台游標。本章重點講述伺服器(後台)游標。