2018年7月11日 星期三

[SQL] FETCH 應用

前言

在一個匯入中想取得流水號並且逐筆加一的情況下
單純使用Insert 時取得的流水號皆為同一組
原因為SQL執行一批資料時取得的最大值皆會是同一個
意思就是進行一批資料的Insert時並不是一筆一筆進入資料庫的
update 同理
所以來試試FETCH吧~


用法

Declare @SN int
DECLARE PDAgreeSN CURSOR FOR --建立FETCH、取得Key值
select SN from aa_Bee2

OPEN PDAgreeSN;--開啟FETCH
FETCH NEXT FROM PDAgreeSN --塞入第一筆數值
INTO @SN;
WHILE @@FETCH_STATUS = 0 --FETCH成功則繼續
BEGIN
--取到SN了想幹嘛就幹嘛
update aa_Bee2 set PDAgreeSN=dbo.GetPDSN(30030,GETDATE()) --取流水號的某個FN
where SN=@SN

FETCH NEXT FROM PDAgreeSN --塞入下筆數值
INTO  @SN;
END
CLOSE PDAgreeSN; --關閉FETCH
DEALLOCATE PDAgreeSN; --刪除FETCH

沒有留言:

張貼留言