通過游標在SQL儲存過程中迴圈

2021-09-05 23:16:06 字數 1508 閱讀 8992

今天有個需求要寫乙個儲存過程,需要從乙個表中讀取資料到另外乙個表中,由於是很多行的資料,所以需要迴圈,我琢磨了一下,使用了游標,至於使用游標的好壞,還請大家指點,

先建立兩個測試表吧:

create

table

testa

(id

intidentity

,userchname

nvarchar(50

),userenname

nvarchar(50

))create

table

testb

(id

intidentity

,userchname

nvarchar(50

),userenname

nvarchar(50

))

表建的比較簡單,需要從testa表匯入資料到testb表中(大概就這麼個意思,表建的比較弱智);

儲存過程開始了:

create

proc

sp_testcursor

asdeclare

@userchname

nvarchar

(500

), @userenname

nvarchar

(500

)declare

cur

cursor

forselect

userchname, userenname

from

testa

open

cur

fetch

next

from

cur

into

@userchname

,@userenname

--先去第一條資料

while

@userchname

isnot

null

and@userenname

isnot

null

and@@fetch_status=0

--結束的條件

begin

insert

into

testb(userchname, userenname)

values

(@userchname

,@userenname

)fetch

next

from

cur

into

@userchname

,@userenname

--取下一條資料,相當於c#中的i++

endclose

cur

--關閉游標

deallocate

cur go

個人感覺就這個需求,游標還是比較簡單的,仔細琢磨一下他和一般程式語言的for迴圈,while迴圈是一樣的,有乙個判斷迴圈調至的條件,有往前走的遞增

在SQL的儲存過程中應用游標計算

建立乙個儲存過程,並返回乙個已經開啟的游標 create procedure return cursor userid varchar 40 cur kpi guid cursor varying output as begin set cur kpi guid cursor local scrol...

儲存過程中帶游標

create procedure updatetimeproperty surroundingrock nvarchar 200 ifclassname nvarchar 200 prop startstation nvarchar 200 prop endstatoin nvarchar 200 ...

sql儲存過程 游標 迴圈表

游標例項 利用游標迴圈表 根據userid賦值 alter procedure cursor eg1 asbegin declare a int,error int declare temp varchar 50 臨時變數,用來儲存游標值 set a 1 set error 0 begin tran...