sql server遍歷表一般都要用到游標,sql server中可以很容易的用游標實現迴圈,實現sql server遍歷表中記錄。本文將介紹利用使用表變數和游標實現資料庫中表的遍歷。
以下**中,**塊之間的差異已經用灰色的背景標記。
1但是這種方法,必須借助rowcount。但是使用set rowcount 將可能會影響 delete、insert 和 update 語句。declare
@temp
table23
(45[
id]intidentity(1, 1
) ,67[
name
]varchar(10)8
9)
1011
declare
@tempid
int,
1213
@tempname
varchar(10
) 14
15insert
into
@temp
1617
values ( 'a'
) 18
19insert
into
@temp
2021
values ( 'b'
) 22
23insert
into
@temp
2425
values ( 'c'
) 26
27insert
into
@temp
2829
values ( 'd'
) 30
31insert
into
@temp
3233
values ( 'e'
) 34
35while
exists ( select[id
]3637from
@temp)38
39begin
4041
setrowcount142
43select
@tempid=[
id],44
45@tempname=[
name]46
47from
@temp
4849
setrowcount0
5051
--delete from @temp where [id] = @tempid
5253
'name:----'+
@tempname
5455
end
所以修改上面while迴圈,改用top來選出首條記錄。
1這種方法也存在乙個問題,需要將遍歷過的行刪除,事實上,我們在實際應用中可能並不想要遍歷完一行就刪除一行。while
exists ( select[id
]23from
@temp)4
5begin67
select
top189
@tempid=[
id],10
11@tempname=[
name]12
13from
@temp
1415
delete
from
@temp
1617
where[id
]=@tempid
1819
select*20
21from
@temp
2223
2425
exec('
drop table '+
)2627print
'name:----'+
@tempname
2829
end
游標是非常**的一種存在,使用游標經常會比使用面向集合的方法慢2-3倍,當游標定義在大資料量時,這個比例還會增加。如果可能,盡量使用while,子查詢,臨時表,函式,表變數等來替代游標,記住,游標永遠只是你最後無奈之下的選擇,而不是首選。
1sql server遍歷表中記錄的實現方法--定義表變數23
declare
@temp
table45
(67[
id]intidentity(1, 1
) ,89[
name
]varchar(10)10
11)
1213
declare
@tempid
int,
1415
@tempname
varchar(10
) 16
17declare test_cursor cursor local for
1819
select[id
],[name
]from
@temp
2021
--插入資料值
2223
insert
into
@temp
2425
values ( 'a'
) 26
27insert
into
@temp
2829
values ( 'b'
) 30
31insert
into
@temp
3233
values ( 'c'
) 34
35insert
into
@temp
3637
values ( 'd'
) 38
39insert
into
@temp
4041
values ( 'e'
) 42
4344
45--
開啟游標
4647
open
test_cursor
4849
while
@@fetch_status=0
5051
begin
5253
fetch
next
from test_cursor into
@tempid,@tempname
5455
'name:----'+
@tempname
5657
end58
59close
test_cursor
6061
deallocate test_cursor
sql server游標的使用
出處:
SQL Server遍歷表的幾種方法
原文 sql server遍歷表的幾種方法 在資料庫開發過程中,我們經常會碰到要遍歷資料表的情形,一提到遍歷表,我們第一印象可能就想到使用游標,使用游標雖然直觀易懂,但是它不符合面向集合操作的原則,而且效能也比面向集合低。當然,從面向集合操作的角度出發,也有兩種方法可以進行遍歷表的操作,總結起來,遍...
SQL Server遍歷表的幾種方法
在資料庫開發過程中,我們經常會碰到要遍歷資料表的情形,一提到遍歷表,我們第一印象可能就想到使用游標,使用游標雖然直觀易懂,但是它不符合面向集合操作的原則,而且效能也比面向集合低。當然,從面向集合操作的角度出發,也有兩種方法可以進行遍歷表的操作,總結起來,遍歷表有下面幾種方法。使用游標 使用表變數 使...
SQL Server遍歷表的幾種方法
閱讀目錄 在資料庫開發過程中,我們經常會碰到要遍歷資料表的情形,一提到遍歷表,我們第一印象可能就想到使用游標,使用游標雖然直觀易懂,但是它不符合面向集合操作的原則,而且效能也比面向集合低。當然,從面向集合操作的角度出發,也有兩種方法可以進行遍歷表的操作,總結起來,遍歷表有下面幾種方法。使用游標 使用...