SQL游標
1. 游標(cursor)是系統(tǒng)為用戶開設(shè)的一個數(shù)據(jù)緩沖區(qū),存放SQL語句的執(zhí)行結(jié)果。每個游標區(qū)都有一個名字,用戶可以用SQL語句逐一從游標中獲取記錄,并賦給主變量,交由主語言進一步處理。
2. 游標實際上是一種從包括多條數(shù)據(jù)記錄的結(jié)果集中每次提取一條記錄的機制。
3. 游標的缺點:在性能上,游標會吃更多的內(nèi)存,占用更多資源。
游標的優(yōu)點:
(1). 允許應(yīng)用程序?qū)Σ樵冋Z句返回的行結(jié)果集中每一行進行相同或不同操作,提供靈活性的操作。
(2). 提供基于游標位置對表中數(shù)據(jù)進行刪除、插入或更新的能力。
實例:
--定義變量(用于賦值從游標中獲取的每條記錄的字段值)
declare @clubId INT,@ClubCode VARCHAR(50)
--1.定義游標
declare myCursor Cursor for (select clubId,ClubCode from t_club)
--2.打開游標
open myCursor;
--3.使用游標
fetch next from myCursor into @clubId --移動游標指向到第一條數(shù)據(jù),提取第一條數(shù)據(jù)存放在變量中
while @@FETCH_STATUS=0 --判斷是否提取記錄是否成功并繼續(xù)循環(huán)
BEGIN
--使用提取的變量
if(select COUNT(*) from T_ClubParam where ClubID=@clubId and Code='StartTeeTime')=0
begin
insert into T_ClubParam values(@clubId,'StartTeeTime','08:00',0,'中央預(yù)定第一組TeeTime起始時間')
END
if(select COUNT(*) from T_ClubParam where ClubID=@clubId and Code='EndTeeTime')=0
begin
insert into T_ClubParam values(@clubId,'EndTeeTime','17:00',0,'中央預(yù)定最后一組TeeTime結(jié)束時間')
END
fetch next from myCursor into @clubId --繼續(xù)提取下一行
END
--4.關(guān)閉游標
close myCursor;
--5.釋放游標
deallocate myCursor;
GO

浙公網(wǎng)安備 33010602011771號