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