sql中多層迴圈示例 有游標

2021-09-08 04:51:27 字數 1509 閱讀 6787

在需求處理中,我們會遇到需要通過sql多層迴圈來處理的問題。如:a表中有8條資料,b表中有10條資料,需要實現a表中的每1條資料對應b表中的10條資料,最後就有了80條資料,從而實現一對多的關係。那如何通過迴圈來處理呢?

下面就將為你介紹sql中while迴圈語句和通過游標來實現迴圈的例項,供你參考,希望對您學習sql中的迴圈語句能夠有所幫助。

注:示例中a表相當於t_test1,b表相當於t_test2

一、while迴圈實現

declare @user_tel varchar(20),@contact_tel varchar(20)

declare @i int,@j int,i_max int,@j_max int

select @i=1,@j=1

select @i_max=max(id) from t_test1

select @j_max=max(id) from t_test2

while @i<=@i_max

begin

select @user_tel=user_tel from t_test1 where id=@i

while @j<=@j_max

begin

select @contact_tel=user_tel from t_test2 where id=@j

insert into t_tmp(user_tel,contact_tel,nick_name,update_dt)

select @user_tel,@contact_tel,'如夢',getdate()

set @j=@j+1

endset @j=1

set @i=@i+1

end二、游標實現過程

--採用游標來實現迴圈處理

declare @user_tel varchar(20),@contact_tel varchar(20)

declare cur_test cursor for select user_tel from t_test1

declare @i int,@j_max int,

select @i=1

select @j_max=max(id) from t_test2

open  cur_test

fetch next from cur_test into @user_tel

while  @@fetch_status=0

begin

while @i<=@j_max

begin

select @contact_tel=user_tel from t_test2 where id=@i

insert into t_tmp(user_tel,contact_tel,nick_name,update_dt)

select @user_tel,@contact_tel,'如夢',getdate()

set @i=@i+1

endset @i=1

fetch next from cur_test into @user_tel

SQL中的迴圈 for迴圈 游標

sql中的迴圈 for迴圈 游標 1.利用游標迴圈更新 刪除memberaccount表中的資料 declare my cursor cursor 定義游標 for select from dbo.memberaccount 查出需要的集合放到游標中 open my cursor 開啟游標 fetc...

sql 迴圈,游標

declare userid varchar 50 declare my cursor cursor 定義游標 for select userid from dbo.memberaccount 查出需要的集合放到游標中 open my cursor 開啟游標 fetch next from my c...

sql游標迴圈

declare begindate datetime convert datetime,2019.05.06 09 40 50 enddate datetime getdate idint declare my cursor cursor 定義游標 for select id from dbo.op...