MS SQL入門基礎 游標 游標的優點和種類

2021-09-05 17:17:17 字數 1726 閱讀 7893

本章前半部分提供了在ms sql server 中應用游標所應具有的有關游標的必要知識和各種語法。從中讀者可以了解游標的優點、種類、作用、學會如何定義、開啟、訪問、關閉、釋放游標以及游標的應用。除此之外,在本章的後半部分我們介紹了檢視和使用者自定義函式,使讀者了解檢視的眾多優點,比如簡化操作、提高資料安全性;了解如何建立、管理檢視和使用者自定義函式;了解如何在儲存過程和批處理中呼叫使用者自定義函式等諸多問題。

在資料庫開發過程中,當你檢索的資料只是一條記錄時,你所編寫的事務語句**往往使用select insert 語句。但是我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?游標為我們提供了一種極為優秀的解決方案。

13.1.1 游標和游標的優點

在資料庫中,游標是乙個十分重要的概念。游標提供了一種對從表中檢索出的資料進行操作的靈活手段,就本質而言,游標實際上是一種能從包括多條資料記錄的結果集中每次提取一條記錄的機制。游標總是與一條t_sql 選擇語句相關聯因為游標由結果集(可以是零條、一條或由相關的選擇語句檢索出的多條記錄)和結果集中指向特定記錄的游標位置組成。當決定對結果集進行處理時,必須宣告乙個指向該結果集的游標。如果曾經用 c 語言寫過對檔案進行處理的程式,那麼游標就像您開啟檔案所得到的檔案控制代碼一樣,只要檔案開啟成功,該檔案控制代碼就可代表該檔案。對於游標而言,其道理是相同的。可見光標能夠實現按與傳統程式讀取平面檔案類似的方式處理來自基礎表的結果集,從而把表中資料以平面檔案的形式呈現給程式。

我們知道關聯式資料庫管理系統實質是面向集合的,在ms sql server 中並沒有一種描述表中單一記錄的表達形式,除非使用where 子句來限制只有一條記錄被選中。因此我們必須借助於游標來進行面向單條記錄的資料處理。

由此可見,游標允許應用程式對查詢語句select 返回的行結果集中每一行進行相同或不同的操作,而不是一次對整個結果集進行同一種操作;它還提供對基於游標位置而對錶中資料進行刪除或更新的能力;而且,正是游標把作為面向集合的資料庫管理系統和面向行的程式設計兩者聯絡起來,使兩個資料處理方式能夠進行溝通。

13.1.2 游標種類

ms sql server 支援三種型別的游標:transact_sql 游標,api 伺服器游標和客戶游標。

(1) transact_sql 游標

transact_sql 游標是由declare cursor 語法定義、主要用在transact_sql 指令碼、儲存過程和觸發器中。transact_sql 游標主要用在伺服器上,由從客戶端傳送給伺服器的transact_sql 語句或是批處理、儲存過程、觸發器中的transact_sql 進行管理。 transact_sql 游標不支援提取資料塊或多行資料。

(2) api 游標

api 游標支援在ole db, odbc 以及db_library 中使用游標函式,主要用在伺服器上。每一次客戶端應用程式呼叫api 游標函式,ms sql sever 的ole db 提供者、odbc驅動器或db_library 的動態鏈結庫(dll) 都會將這些客戶請求傳送給伺服器以對api游標進行處理。

(3) 客戶游標

客戶游標主要是當在客戶機上快取結果集時才使用。在客戶游標中,有乙個預設的結果集被用來在客戶機上快取整個結果集。客戶游標僅支援靜態游標而非動態游標。由於伺服器游標並不支援所有的transact-sql 語句或批處理,所以客戶游標常常僅被用作伺服器游標的輔助。因為在一般情況下,伺服器游標能支援絕大多數的游標操作。

由於api 游標和transact-sql 游標使用在伺服器端,所以被稱為伺服器游標,也被稱為後台游標,而客戶端游標被稱為前台游標。在本章中我們主要講述伺服器(後台)游標。

MSSQL 游標的使用

與windows或dos的 游標 不同,ms sql的游標是一種臨時的資料庫物件,既對可用來旋轉儲存在系統永久表中的資料行的副本,也可以指向儲存在系統永久表中的資料行的指標。游標為您提供了在逐行的基礎上而不是一次處理整個結果集為基礎的操作表中資料的方法。1 如何使用游標 1 定義游標語句 decla...

mssql游標的簡單應用

游標修改資料 declare alarm cursor cursor global scroll for select lsc id,station id,alarm time,clear time,start time,end time from tmptelemetertwoday open a...

MS SQL游標的使用及理解

與windows或dos的 游標 不同,ms sql的游標是一種臨時的資料庫物件,既對可用來旋轉儲存在系統永久表中的資料行的副本,也可以指向儲存在系統永久表中的資料行的指標。游標為您提供了在逐行的基礎上而不是一次處理整個結果集為基礎的操作表中資料的方法。1 如何使用游標 1 定義游標語句 decla...