2013年10月18日 星期五

[筆記]Stored Procedure for迴圈的用法

最近工作上常常遇到要用Store Procedure的迴圈來解決轉檔問題,

今天忘記加一行而導致鬼擋牆的無限輪迴發生~~~(鬼月不是過了嗎?)

因為寫法和一般java,C等迴圈不太一樣,所以很容易就被忽略,特此趕快做筆記,以防日後

又忘記。




select @Data_ID = '', @Data_ID_VerNo = 0, @Seq_No = 0,@SplitStr=''

declare dataLoop cursor
FOR select Data_ID,Data_ID_VerNo,Rtrim(cast(Content as varchar(500)))+'\n' 
    from AAAA
  
open dataLoop
fetch next from dataLoop into @Data_ID,@Data_ID_VerNo,@SplitStr
while(@@fetch_status = 0)
  begin

  While (Charindex(@SplitChar,@SplitStr)>0)/*切字串成為多個欄位*/
      
      Begin
      Insert Into #AAAA (Data)
      Select Data = ltrim(rtrim(Substring(@SplitStr,1,Charindex(@SplitChar,@SplitStr)-1)))
      Set @SplitStr = Substring(@SplitStr,Charindex(@SplitChar,@SplitStr)+2,len(@SplitStr))
      Set @Count = @Count + 1
      End

fetch next from dataLoop into @Data_ID,@Data_ID_VerNo,@SplitStr
/*(再加一次fetch next)*/

  end  
Close dataLoop
Deallocate dataLoop
將Content根據'\n'切割,每個切割為一個ROW DATA,
ltrim(rtrim(Substring(@SplitStr,1,Charindex(@SplitChar,@SplitStr)-1)))
利用Charindex來取得'\n'的位置,然後再根據此位置算出的長度用Substring做切割。
Charindex('@SplitChar','@SplitStr')/*Charindex函數*/
Charindex('@STRING','@CHAR')會回傳@CHAR是這個字串的第幾個字元位置。
Substring('@STRING','@START','@LEN')/*Substring函數*/

Substring('@STRING','@START','@LEN')會擷取@STRING從@START且長度@LEN的字串。

沒有留言:

張貼留言

前端網頁onHover強迫啟動

通常為了調整CSS或HTML,會需要前端網頁的某個  DOM elements 強迫啟動onHover,如此才能進行檢視, 不知道各位小夥伴們有沒有這樣的經驗? Hao小這邊提供三個方法: 用快捷鍵 用google chrome 開發人員工具(MAC快捷指令 Op...