查詢語句可能返回多條記錄,如果資料量非常大,需要使用游標來逐條讀取查詢結果集中的記錄,應用程式可以根據需要滾動或瀏覽其中的資料。游標通常是在儲存過程中使用的,在儲存過程中使用select語句查詢資料庫時,查詢返回的資料存放在結果集中。使用者在得到結果集後,需要逐行逐列的獲取其中包含的資料,從而在應用程式中使用這些值。游標就是一種定位並控制結果集的機制。掌握游標的概念和使用方法對於編寫複雜的儲存過程是必要的。
游標的概念:
游標是一種處理資料的方法,主要用於儲存過程、觸發器、和transact-sql指令碼中,他們使結果集的內容可用於其他transact-sql 語句。在檢視或處理結果集中的資料時,游標可以提供在結果集中向前或向後瀏覽資料的功能。類似於c語言中的指標,它可以指向結果集中的任意位置。當要對結果集逐行單獨處理時,必須宣告乙個指向該結果集的游標變數。
sql server 中的資料操作結果都是面向集合的,並沒有一種描述表中單一記錄的表示式,除非使用where子句限定查詢結果,使用游標可以提供這種功能,並且游標的使用操作過程更加靈活高效。
游標的功能:
允許定位在結果集的特定行。
從結果集的當前位置檢索一行或多行。
支援對結果集中當前位置的行進行資料修改。
如果其他使用者需要對顯示在結果集中的資料庫資料進行修改,游標可以提供不同級別的可見性支援。
提供在指令碼、儲存過程和觸發器中使用的、訪問結果集中的資料的transact-sql語句。
游標的分類:
1.transact-sql游標
基於declare cursor語法,主要用於transact-sql指令碼、儲存過程和觸發器。transact-sql游標在伺服器上實現,並由從客戶端傳送到伺服器的transact-sql語句管理。它們還可能包含在批處理、儲存過程或觸發器中。
2.應用程式程式設計介面(api)伺服器游標
支援oledb和odbc中的api游標函式,api伺服器游標在伺服器上實現。每次客戶端應用程式呼叫api游標函式時,sql server native client ole de訪問介面或odbc 驅動程式會把請求傳輸到伺服器,以便對api伺服器游標進行操作。
3.客戶端游標
由sql server native client ole de驅動程式和實現ado api 的dll在內部實現。
客戶端游標通過在客戶端快取記憶體所有結果集中的行來實現。每次客戶端應用程式呼叫api游標函式時,由sql server native client ole de驅動程式或ado dll會對客戶端上快取記憶體的結果集中的行執行游標操作。
SQLSERVER 中的游標
sqlserver 中的游標 在關聯式資料庫中,傳統的查詢是面向結果集的,如果你想一行一行的讀取資料並做相關的處理,那麼你就要用到游標 像for迴圈一樣,允許你一行一行的讀取資料 能不用游標就不用游標,在效能上,游標會吃更多的記憶體,減少可用的併發,占用寬頻,鎖定資源,當然還有更多的 量 總之 1....
SQL Server中的游標
游標平時不怎麼用,以前學過印象也不深了,今天要用查查資料發現,這個跟我平時用臨時表的區別大嗎?好像不大。可能是我理解不深刻吧。1 usetest23 declare cusnum varchar 10 cusname nvarchar 100 cusfname nvarchar 100 這邊用nva...
sql server 中游標的使用
create table borrowbook 建立表學生借書 borrowbook int identity 1,1 stutid int stufeeid int borrowdate datetime,returndate datetime,fee money create table stu...