sqlserver游標使用和迴圈

2021-08-15 03:43:24 字數 2740 閱讀 6321

游標說簡單點都是設定乙個資料表的行指標,然後使用迴圈等運算元據;

游標主要是用來完成複雜的業務邏輯;

比如sqlserver中樹型查詢,比如如下業務點

資料表編號 名稱 父編號

1 中國 0

2 上海市 1

3 虹口區 2

4 楊浦區 2

顯示結果

/中國/上海市/虹口區

/中國/上海市/楊浦區

類似這樣的業務點,在sqlserver中就可能需要使用游標來做了

eg:createprocedureupdatevalue--儲存過程裡面放置游標

as

begin

declareupdatecursorcursor--宣告乙個游標,查詢滿足條件的資料

forselect主鍵,sd_valfromeq_sd_d

openupdatecursor--開啟

declare@idint,@sd_val nvarchar(20)--宣告乙個變數,用於讀取游標中的值

fetchnextfromupdatecursorinto@id,@sd_val

while @@fetch_status=0--迴圈讀取

begin

updateeq_sd_dsetname=@sd_valwhereid=@id

fetchnextfromupdatecursorinto@id,@sd_val

end

closeupdatecursor--關閉

deallocateupdatecursor--刪除

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...