您好,登錄后才能下訂單哦!
利用游標循環:
DECLARE My_Cursor CURSOR --定義游標
FOR (SELECT * FROM dbo.Table) --查出需要的集合放到游標中
OPEN My_Cursor; --打開游標
FETCH NEXT FROM My_Cursor ; --讀取第一行數據
WHILE @@FETCH_STATUS = 0
BEGIN
--UPDATE dbo.Table SET 字段1 =‘***’ WHERE CURRENT OF My_Cursor; --更新
--DELETE FROM dbo.Table WHERE CURRENT OF My_Cursor; --刪除
FETCH NEXT FROM My_Cursor; --讀取下一行數據
END
CLOSE My_Cursor; --關閉游標
DEALLOCATE My_Cursor; --釋放游標
利用游標賦值循環:
declare @參數1 參數1類型,@參數2 參數2類型
DECLARE MyCursor CURSOR --定義游標(利用游標循環)
FOR (select 字段1,字段2 from Table) --查出需要的集合放到游標中
order by 字段1 --排序語句放在括號外
OPEN MyCursor; --打開游標
FETCH NEXT FROM MyCursor INTO @參數1 ,@參數2; --讀取第一行數據
WHILE @@FETCH_STATUS = 0
Begin
if 條件成立
begin --如需跳過當前循環,需先賦值,再continue,否則會進入死循環
FETCH NEXT FROM MyCursor INTO @參數1 ,@參數2;
continue; --跳過當前循環,進入下一循環
end
if 條件成立
begin
Break; --跳出整個循環
end
/* 需要在循環內處理的*** */
--PRINT @參數1,參數2; --打印參數值(調試)
--UPDATE Table set 字段3=*,字段4=* where 字段1=@參數1 and 字段2=@參數2
--Insert into Table1(字段1,字段2) values(參數1,參數2)
--Delete from table where 字段1=參數1 and 字段2=參數2
FETCH NEXT FROM MyCursor INTO @參數1 ,@參數2; --賦值后進入下一循環
End
CLOSE MyCursor; --關閉游標
DEALLOCATE MyCursor; --釋放游標
類似For循環的SQL循環:
declare @itemnumber int --定義需要循環的次數
declare @tagint int --定義標志字段,用于結束循環
set @tagint=1
select @itemnumber = count(distinct Creater) from Demo_TestTable where isnull(Creater,'')<>'' And
DATEDIFF(DAY,CreatDate,GETDATE())<1
if(@itemnumber>0)
begin
while @tagint<=@itemnumber
begin
waitfor delay '00:00:01' --每隔一秒再執行 可用參數變量替換
Update Demo_TestTable set CreatDate=GETDATE() where Creater =(
Select Creater from (
select Creater,ROW_NUMBER() over(order by Creater) as RowID from Demo_TestTable where
isnull(Creater,'')<>'' And DATEDIFF(DAY,CreatDate,GETDATE())<1 group by Creater
) TableA
where TableA.RowID=@tagint
)
set @tagint=@tagint+1
end
end
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。