SQL Server中cursor的使用步驟

2022-02-21 07:07:53 字數 1963 閱讀 9658

參考文章:

游標的生命週期包含有五個階段:宣告游標、開啟游標、讀取游標資料、關閉游標、釋放游標。

declare cursor_name cursor [ local | global ] 

[ forward_only | scroll ]

[ static | keyset | dynamic | fast_forward ]

[ read_only | scroll_locks | optimistic ]

[ type_warning ]

for select_statement

[ for update [ of column_name [ ,...n ] ] ]

[;]具體的引數說明:

cursor_name:游標名稱。

local:作用域為區域性,只在定義它的批處理,儲存過程或觸發器中有效。

global:作用域為全域性,由連線執行的任何儲存過程或批處理中,都可以引用該游標。

[local | global]:預設為local。

forward_only:指定游標智慧型從第一行滾到最後一行。fetch next是唯一支援的提取選項。如果在指定forward_only是不指定static、keyset、dynamic關鍵字,預設為dynamic游標。如果forward_only和scroll沒有指定,static、keyset、dynamic游標預設為scroll,fast_forward預設為forward_only

static:靜態游標

keyset:鍵集游標

dynamic:動態游標,不支援absolute提取選項

fast_forward:指定啟用了效能優化的forward_only、read_only游標。如果指定啦scroll或for_update,就不能指定他啦。

read_only:不能通過游標對資料進行刪改。

scroll_locks:將行讀入游標是,鎖定這些行,確保刪除或更新一定會成功。如果指定啦fast_forward或static,就不能指定他啦。

optimistic:指定如果行自讀入游標以來已得到更新,則通過游標進行的定位更新或定位刪除不成功。當將行讀入游標時,sqlserver 不鎖定行,它改用timestamp列值的比較結果來確定行讀入游標後是否發生了修改,如果表不行timestamp列,它改用校驗和值進行確定。如果已 修改改行,則嘗試進行的定位更新或刪除將失敗。如果指定啦fast_forward,則不能指定他。

type_warning:指定將游標從所請求的型別隱式轉換為另一種型別時向客戶端傳送警告資訊。

for update[of column_name ,....] :定義游標中可更新的列。

open [ global ] cursor_name | cursor_variable_name

fetch

[ [next|prior|frist|last|absoute n|relative n ]

from ]

[global] cursor_name

[into @variable_name[,....]]

具體引數說明:

全域性變數@@fetch_status的值分別取(0:fetch語句成功;-1:fetch語句失敗或行不在結果集中;-2:提取的行不存在),獲得提取的狀態資訊,主要用來判斷fetch語句返回資料的有效性。

--游標修改當前資料語法

update 基表名 set 列名=值[,...] where current of 游標名

--游標刪除當前資料語法

delete 基表名 where current of 游標名

close [ global ] cursor_name | cursor_variable_name

deallocate  [ global ] cursor_name | cursor_variable_name

ORACLE中用for in 使用cursor

cursor cur is select from for cur result in cur loop begin v sum cur result.列名1 cur result.列名2 end end loop end 中的cursor cur is得到的是什麼?用for in 能夠得到什麼?答...

CSS中控制滑鼠指標形狀的屬性cursor

最常用的滑鼠指標變成小手形 cursor pointer 曾經ie5cursor hand也可以有小手形,現經測試高版本ie edge firefox chrome qq 360 等瀏覽器均失敗 強烈建議使用pointer 案例 css滑鼠手型效果 pointer hand css滑鼠由系統自動給出...

sqlserver 中Cube,rollup的使用

一 select from cj 1張三語文80.0 2張三數學90.0 3張三物理85.0 4李四語文85.0 5李四數學92.0 6李四物理82.0 二 select name,sum result from cj group by name 李四259.0 張三255.0 三 select n...