由於這個游標 執行一下就相當於select一下 其效率不敢恭維也沒做深入研究。
1table1結構如下
2id
int3
name
varchar(50
)45declare
@idint
6declare
@name
varchar(50
)7declare
cursor1
cursor
for--
定義游標cursor1
8select
*from
table1
--使用游標的物件(跟據需要填入select文)
9open
cursor1
--開啟游標
1011
fetch
next
from
cursor1
into
@id,
@name
--將游標向下移1行,獲取的資料放入之前定義的變數@id,@name中
1213
while
@@fetch_status=0
--判斷是否成功獲取資料
14begin
15update
table1
setname
=name+'
1'16whereid=
@id--
進行相應處理(跟據需要填入sql文)
1718
fetch
next
from
cursor1
into
@id,
@name
--將游標向下移1行
19end
2021
close
cursor1
--關閉游標
22deallocate
cursor1
複製**
游標一般格式:
declare
游標名稱
cursor for select
欄位1,
欄位2,
欄位3,... from
表名where ...
open
游標名稱
fetch next from
游標名稱
into
變數名1,
變數名2,
變數名3,...
while @@fetch_status=0
begin
sql語句執行過程
... ...
fetch next from
游標名稱
into
變數名1,
變數名2,
變數名3,...
endclose
游標名稱
deallocate
游標名稱 (刪除游標)
例子:/**/
create
table
#temp1(deptid
int,userid
int,username
varchar(20
)) --
待測試的資料表
create
table
#temp2(deptid
int,username
varchar(20
))
--結果表
--先把一些待測試的資料插入到待測試表#temp1中
insert
into
#temp1
select1,
100,'a
'union
allselect1,
101,'b
'union
allselect1,
131,'d
'union
allselect1,
201,'f
'union
allselect2,
302,'c
'union
allselect2,
202,'a
'union
allselect2,
221,'e
'union
allselect3,
102,'y
'union
allselect3,
302,'e
'union
allselect3,
121,'t
'--declare
@deptid
int,
@username
varchar(20
)--定義游標
declare
select_cursor
cursor
forselect
deptid,username
from
#temp1
open
select_cursor
fetch
next
from
select_cursor
into
@deptid
,@username
--提取操作的列資料放到區域性變數中
while
@@fetch_status=0
--返回被 fetch 語句執行的最後游標的狀態
/*@@fetch_status =0 fetch 語句成功
@@fetch_status =-1 fetch 語句失敗或此行不在結果集中
@@fetch_status =-2 被提取的行不存在
*/begin
--當表#temp2列deptid存在相同的資料時,就直接在列username上追加@username值if(
exists
(select
*from
#temp2
where
deptid
=@deptid
)) update
#temp2
setusername
=username
+@username
where
deptid
=@deptid
else
--插入新資料
insert
into
#temp2
select
@deptid
,@username
fetch
next
from
select_cursor
into
@deptid
,@username
endclose
select_cursor
deallocate
select_cursor
select
*from
#temp2
--測試結果
drop
table
#temp1,#temp2
複製**
SQL Cursor 基本用法
由於這個游標 執行一下就相當於select一下 其效率不敢恭維也沒做深入研究。table1結構如下 2 id int3 name varchar 50 4 5 declare idint 6 declare name varchar 50 7 declare cursor1 cursor for 定...
SQL Cursor 基本用法
由於這個游標 執行一下就相當於select一下 其效率不敢恭維也沒做深入研究。table1結構如下 id int name varchar 50 declare id int declare name varchar 50 declare cursor1 cursor for 定義游標cursor1...
SQL Cursor 基本用法
code highlighting produced by actipro codehighlighter freeware 1 table1結構如下 id int name varchar 50 declare idint declare name varchar 50 declare curso...