SQL利用游標遍歷所有資料並更新所有資料

2022-02-23 15:07:39 字數 1295 閱讀 6957

如果對資料進行遍歷迴圈操作,通過sql的游標就可以實現,下面就為您詳細介紹該方法,供您參考,希望對您學習sql資料庫能夠有所幫助。

sql游標的優點是可以方便從乙個結果集中進行迴圈遍歷資料在進行操作。

1、游標允許應用程式對查詢語句select 返回的行結果集中每一行進行相同或不同的操作,而不是一次對整個結果集進行同一種操作;

2、它還提供對基於游標位置而對錶中資料進行刪除或更新的能力;

3、游標把作為面向集合的資料庫管理系統和面向行的程式設計兩者聯絡起來,使兩個資料處理方式能夠進行溝通。 

然而游標也有缺點——複雜和低效,是游標的最大缺點,也是致使很多時候在使用儲存過程中沒有想到游標的主要原因。

1

--將book表中的lookcount(int型)字段加上800-1000的隨機整數

2declare

@bid

int3

declare cur cursor

4read_only

5for

select bid from

dbo.book

6open

cur7

fetch

next

from cur into

@bid

8while(@@fetch_status=0

)9begin

10update dbo.book set lookcount=lookcount+

cast((rand()*(1000

-800)+

800) as

int) where bid=

@bid

11fetch

next

from cur into

@bid

12end

13close

cur14

deallocate cur

使用游標的順序: 聲名游標、開啟游標、讀取資料、關閉游標、刪除游標。

由於 @@fetch_status 對於在乙個連線上的所有游標是全域性性的,要小心使用 @@fetch_status 。在執行一條 fetch 語句後,必須在對另一游標執行另一 fetch 語句前測試 @@fetch_status 。在任何提取操作出現在此連線上前,@@fetch_status 的值沒有定義。

例如,使用者從乙個游標執行一條 fetch 語句,然後呼叫乙個儲存過程,此儲存過程開啟並處理另乙個游標的結果。當控制從被呼叫的儲存過程返回後,@@fetch_status 反映的是在儲存過程中執行的最後的 fetch 語句的結果,而不是在儲存過程被呼叫之前的 fetch 語句的結果。

SQL 利用游標迴圈新增資料

查詢資料 select invest.userid,borrowreturn.realreturntime,borrow.investtype,case borrow.investtype when 0 then 成功000,請注意查收 when 1 then 成功111,請注意查收 when 2 ...

sql 利用游標遍歷乙個查詢結果

這裡有乙個單位表 unitt idname 1單位1 2單位2 有乙個評分專案表 itemt idname 1專案1 2專案2 有乙個單位得分表 scoret idunitid itemid score11 12022 15031 23042 260現在需要遍歷所有單位將他們的分數查詢出來,就用迴圈...

sql查詢所有儲存過程內容 利用游標和臨時表

use 資料庫 declare procname varchar 50 create table tmpname content varchar 2000 create table tmp procname varchar 2000 content1 varchar 8000 定義乙個游標 decl...