2017年11月29日 星期三

[SQL] T-SQL使用CURSOR來跑迴圈

初期在公司主要是寫ASP,DB的部分涉入不深,單純是新增或修改資料表而已,之後才慢慢開始我的資料匯入人生,在一堆資料中打滾,既然要匯入資料當然開始常操作資料庫,覺得還是要多學學T-SQL的語法,有時會需要逐筆更新資料,能夠寫迴圈當然會方便很多啦,看完這些廢話再來就是主題了


使用CURSOR來跑迴圈,以下範例

DECLARE @RowID int
DECLARE @uid varchar(10)
DECLARE @sex varchar(4)

DECLARE temp_cursor CURSOR FOR
  SELECT RowID, uid FROM tempTable
OPEN temp_cursor

FETCH NEXT FROM temp_cursor INTO @RowID, @uid
/*
 @@FETCH_STATUS
 0 FETCH 陳述式順利執行
-1 FETCH 陳述式失敗,或資料列超出結果集
-2 擷取的資料列已遺漏
*/
WHILE @@FETCH_STATUS = 0
BEGIN
  SET @sex=''
  IF LEN(@uid)=8 SET @sex='公司'
  IF LEN(@uid)=10 AND SUBSTRING(@uid,2,1)='1' SET @sex='男'
  IF LEN(@uid)=10 AND SUBSTRING(@uid,2,1)='2' SET @sex='女'

  IF @sex<>''
    UPDATE tempTable SET sex=@sex WHERE RowID=@RowID

  FETCH NEXT FROM temp_cursor INTO @RowID, @uid
END

CLOSE temp_cursor
DEALLOCATE temp_cursor

沒有留言:

張貼留言