游標的理解:
游標其實可以理解成一個定義在特定數據集上的指針,我們可以控制這個指針遍歷數據集,或者僅僅是指向特定的行,所以游標是定義在以Select開始的數據集上的
普通的sql語句是面向集合的,游標是面向行的。比如我們要取100條數據,通過普通的sql語句是一次取出所有行,而游標是一行一行取出的。
游標的缺點:
在性能上,游標會吃更多的內存,減少可用的并發,占用寬帶,鎖定資源,當然還有更多的代碼量
游標的定義:
游標變量支持兩種方式賦值,定義時賦值和先定義后賦值,定義游標變量像定義其他局部變量一樣,在游標前加”@”,注意,如果定義全局的游標,只支持定義時直接賦值,并且不能在游標名稱前面加“@”,兩種定義方式如下
--定義時賦值(支持全局變量)declare myname cursor forselect * from T--先定義,后賦值(不支持全局變量)declare @myname cursorset @myname=cursor forselect * from T
游標的參數:
FORWARD_ONLY(默認)--只能從數據集開始向數據集結束的方向讀取,FETCH NEXT是唯一的選項;
SCROLL --支持游標在定義的數據集中向任何方向,或任何位置移動。
游標使用快速入門:
--定義游標declare myname cursor forselect id,data from T--打開游標open myname--定義需要的參數declare @id intdeclare @data varchar(50)--獲取下一行fetch next from myname into @id,@data--打印結果PRint @idprint @str--關閉游標close myname--釋放游標deallocate myname
新聞熱點
疑難解答