游標說簡單點都是設定乙個資料表的行指標,然後使用迴圈等運算元據;
游標主要是用來完成複雜的業務邏輯;比如sqlserver中樹型查詢,比如如下業務點
資料表編號 名稱 父編號
1 中國 0
2 上海市 1
3 虹口區 2
4 楊浦區 2
顯示結果
/中國/上海市/虹口區
/中國/上海市/楊浦區
類似這樣的業務點,在sqlserver中就可能需要使用游標來做了
eg:create
procedure
updatevalue
--儲存過程裡面放置游標
as
begin
declare
updatecursor
cursor
--宣告乙個游標,查詢滿足條件的資料
for
select
主鍵,sd_val
from
eq_sd_d
open
updatecursor
--開啟
declare
@id
int
,@sd_val nvarchar(20)
--宣告乙個變數,用於讀取游標中的值
fetch
next
from
updatecursor
into
@id,@sd_val
while @@fetch_status=0
--迴圈讀取
begin
update
eq_sd_d
set
name
=@sd_val
where
id=@id
fetch
next
from
updatecursor
into
@id,@sd_val
end
close
updatecursor
--關閉
deallocate
updatecursor
--刪除
end
游標的使用
講了這個多游標的優點,現在我們就親自來揭開游標的神秘的面紗。
使用游標的順序: 聲名游標、開啟游標、讀取資料、關閉游標、刪除游標。
1.3.1宣告游標
最簡單游標宣告:declare 《游標名》cursor for--宣告2個變數
declare @o_id nvarchar(20)
declare @a_salary float
--宣告乙個游標mycursor,select語句中引數的個數必須要和從游標取出的變數名相同
declare mycursor cursor for select o_id,a_salary from addsalary
--開啟游標
open mycursor
--從游標裡取出資料賦值到我們剛才宣告的2個變數中
fetch next from mycursor into @o_id,@a_salary
--判斷游標的狀態
-- 0 fetch語句成功
---1 fetch語句失敗或此行不在結果集中
---2 被提取的行不存在
while (@@fetch_status=0)
begin
--顯示出我們每次用游標取出的值
print '游標成功取出一條資料'
print @o_id
print @a_salary
--用游標去取下一條記錄
fetch next from mycursor into @o_id,@a_salary
end--關閉游標
close mycursor
--撤銷游標
deallocate mycursor
go
sql server 游標和with as使用
declare userid int gameid nvarchar 50 宣告變數,需要讀取的資料 declare cur cursor 去掉static關鍵字即可 forwith emp as select acc.from gxspreaddb.dbo.gxs account acc left...
SQL Server 游標使用
游標概念 資料庫操作中我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?游標為我們提供了一種極為優秀的解決方案。游標 cursor 是系統為使用者開設的乙個資料緩衝區,存放sql語句的執行結果。每個游標區都有乙個名字。使用者可以用sql語句逐一從游標中獲取記錄,並賦...
sqlserver游標使用
create procedure pk test as 宣告2個變數 declare o id nvarchar 20 declare a salary float 宣告乙個游標mycursor,select語句中引數的個數必須要和從游標取出的變數名相同 declare mycursor curso...