SQL-自動補流水號

  • 5992
  • 0
  • SQL
  • 2010-05-21

SQL-自動補流水號

之前發表過一篇可以找出行號,

再利用行號編成流水號,

而同事自已用 T-SQL也寫了一個類似的,

主要方法就是先找出要「被更改」的資料,

然後用「CURSOR 」一筆一筆修改,

跟寫程式做多筆更改是一樣的~~~

DECLARE @IDNO VARCHAR(10)
DECLARE @LoopTag INT
DECLARE @SN INT
SELECT @SN=1

--- 指標宣告,定義指標所指資料---
DECLARE contact_cursor CURSOR 
FOR

select table_key   FROM  table_Name 
	
--- 啟動指標---
OPEN contact_cursor
FETCH NEXT FROM contact_cursor INTO @LoopTag --->將指標SQL查詢的值傳給@LoopTag
--- 指標迴圈:開始,指標所指的資料紀錄不為空則進入迴圈---
WHILE @@FETCH_STATUS = 0
BEGIN	
		IF @SN < 10 
		BEGIN
			Set @IDNO='000'+convert(varchar,@SN)   
		END
		ELSE IF @SN < 100 
		BEGIN
			Set @IDNO='00'+convert(varchar,@SN)     
		END
		ELSE IF @SN < 1000 
		BEGIN
			Set @IDNO='0'+convert(varchar,@SN)     
		END
		ELSE
		BEGIN
			Set @IDNO=convert(varchar,@SN)
		END
		
		--UPDATE table_Name SET @IDNO WHERE table_key = @LoopTag
		PRINT @LoopTag + @IDNO;		
		SELECT @SN=@SN+1

END ---> 結束內部迴圈
FETCH NEXT FROM contact_cursor  INTO @LoopTag  ---> 將指標只向下一筆資料
END  ---> 結束外部迴圈
--- 結束並釋放指標---
CLOSE contact_cursor  
DEALLOCATE contact_cursor 

 

自我LV~