SQL Server 游標(biāo)語(yǔ)句 聲明/打開/循環(huán)實(shí)例
更新時(shí)間:2013年04月25日 18:06:49 作者:
游標(biāo)屬于行級(jí)操作 消耗很大 SQL查詢是基于數(shù)據(jù)集的所以一般查詢能有 能用數(shù)據(jù)集 就用數(shù)據(jù)集 別用游標(biāo) 數(shù)據(jù)量大 是性能殺手
SQL Server游標(biāo)語(yǔ)句使用方法:
--聲明一個(gè)游標(biāo)
DECLARE MyCursor CURSOR
FOR SELECT TOP 5 FBookName,FBookCoding FROM TBookInfo//定義一個(gè)叫MyCursor的游標(biāo),存放for select 后的數(shù)據(jù)
--打開一個(gè)游標(biāo)
OPEN MyCursor//即打開這個(gè)數(shù)據(jù)集
--循環(huán)一個(gè)游標(biāo)
DECLARE @BookName nvarchar(2000),@BookCoding nvarchar(2000)
FETCH NEXT FROM MyCursor INTO @BookName,@BookCoding//移動(dòng)游標(biāo)指向到第一條數(shù)據(jù),提取第一條數(shù)據(jù)存放在變量中
WHILE @@FETCH_STATUS =0//如果上一次操作成功則繼續(xù)循環(huán)
BEGIN
print 'name'+@BookName
FETCH NEXT FROM MyCursor INTO @BookName,@BookCoding//繼續(xù)提下一行
END
--關(guān)閉游標(biāo)
CLOSE MyCursor
--釋放資源
DEALLOCATE MyCursor
eg:
create table #a
(
id varchar(20),
name varchar(20)
)
insert into #a select 1,'jack'
insert into #a select 2,'join'
insert into #a select 3,'make'
declare mycursor cursor
for select * from #a
open mycursor
declare @id varchar(20),@name varchar(20)
fetch next from mycursor into @id,@name
while @@fetch_status=0
begin
select @id,@name
fetch next from mycursor into @id,@name
end
close mycursor
deallocate mycursor

復(fù)制代碼 代碼如下:
--聲明一個(gè)游標(biāo)
DECLARE MyCursor CURSOR
FOR SELECT TOP 5 FBookName,FBookCoding FROM TBookInfo//定義一個(gè)叫MyCursor的游標(biāo),存放for select 后的數(shù)據(jù)
--打開一個(gè)游標(biāo)
OPEN MyCursor//即打開這個(gè)數(shù)據(jù)集
--循環(huán)一個(gè)游標(biāo)
DECLARE @BookName nvarchar(2000),@BookCoding nvarchar(2000)
FETCH NEXT FROM MyCursor INTO @BookName,@BookCoding//移動(dòng)游標(biāo)指向到第一條數(shù)據(jù),提取第一條數(shù)據(jù)存放在變量中
WHILE @@FETCH_STATUS =0//如果上一次操作成功則繼續(xù)循環(huán)
BEGIN
print 'name'+@BookName
FETCH NEXT FROM MyCursor INTO @BookName,@BookCoding//繼續(xù)提下一行
END
--關(guān)閉游標(biāo)
CLOSE MyCursor
--釋放資源
DEALLOCATE MyCursor
eg:
復(fù)制代碼 代碼如下:
create table #a
(
id varchar(20),
name varchar(20)
)
insert into #a select 1,'jack'
insert into #a select 2,'join'
insert into #a select 3,'make'
declare mycursor cursor
for select * from #a
open mycursor
declare @id varchar(20),@name varchar(20)
fetch next from mycursor into @id,@name
while @@fetch_status=0
begin
select @id,@name
fetch next from mycursor into @id,@name
end
close mycursor
deallocate mycursor

游標(biāo)屬于行級(jí)操作 消耗很大 SQL查詢是基于數(shù)據(jù)集的所以一般查詢能有 能用數(shù)據(jù)集 就用數(shù)據(jù)集 別用游標(biāo) 數(shù)據(jù)量大 是性能殺手
相關(guān)文章
SQL中如何添加數(shù)據(jù)幾種方法詳細(xì)解說(shuō)
數(shù)據(jù)插入操作是SQL的基礎(chǔ)操作之一,下面這篇文章主要給大家介紹了關(guān)于SQL中如何添加數(shù)據(jù)的幾種方法,文中通過(guò)圖文以及代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06
MSSQL 將截?cái)嘧址蚨M(jìn)制數(shù)據(jù)問(wèn)題的解決方法
主要原因就是給某個(gè)字段賦值時(shí),內(nèi)容大于字段的長(zhǎng)度或類型不符造成的2010-10-10
SQL中不停機(jī)擴(kuò)容實(shí)現(xiàn)的幾種方法
不停機(jī)擴(kuò)容是一種在不影響系統(tǒng)正常運(yùn)行的情況下,動(dòng)態(tài)增加資源以提升系統(tǒng)性能和容量的方法,下面就來(lái)介紹一下幾種常見(jiàn)的方法,感興趣的可以了解一下2025-04-04
SQL語(yǔ)句實(shí)現(xiàn)刪除ACCESS重復(fù)記錄的兩種方法
有兩個(gè)意義上的重復(fù)記錄,一是完全重復(fù)的記錄,也即所有字段均重復(fù)的記錄,二是部分關(guān)鍵字段重復(fù)的記錄,比如Name字段重復(fù),而其他字段不一定重復(fù)或都重復(fù)可以忽略。2010-04-04
SQL中l(wèi)imit的用法小結(jié)(一個(gè)參數(shù),兩個(gè)參數(shù))分頁(yè)查詢
Limit通常用于SELECT語(yǔ)句的末尾,用于限制查詢結(jié)果的數(shù)量,這篇文章主要介紹了SQL中l(wèi)imit的用法(一個(gè)參數(shù),兩個(gè)參數(shù)),分頁(yè)查詢,需要的朋友可以參考下2023-12-12
sqlserver數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)操作詳解(圖)
本文主要介紹的是怎么使用Microsoft SQL Server Management Studio導(dǎo)入數(shù)據(jù),大家參考使用吧2014-01-01

