SQL迴圈清除表資料,sql迴圈

來源:互聯網
上載者:User

SQL迴圈清除表資料,sql迴圈
SQL迴圈執行清除表資料語句

最近項目經常需要清庫測試 但是一個個 truncate 很慢 浪費時間 所以寫了個 sql批量清除表資料 這樣方便下次使用 靈活性也很高 語句不僅可以 用來清除資料 也可以 批量update delete等

邏輯:
根據 字元拆分 字串 擷取每次執行語句的 表名
根據 split 擷取字串內有多少個表 也就是迴圈的次數
每次迴圈 先擷取本次 執行語句的表名 執行語句 然後再substring下 去除這次執行過的表名 直到迴圈結束

--定義--declare @i int                    --迴圈變數declare @length int               --迴圈次數declare @tableList varchar(Max)   --需要迴圈的表字串declare @split varchar(Max)       --分割字串字元declare @tableName varchar(Max)   --執行語句的表名
--初始--set @i=0set @tableList='ATable,BTable,CTable 'set @split=','set @tableList=ltrim(rtrim(@tableList))     --清除字串 左右空格set @length=(select len(@tableList)-len(REPLACE(@tableList,@split,''))) --計算需要迴圈的次數 

一開始寫時 執行語句那裡 直接寫 truncate table @tableName
這樣肯定不行的 因為@tableName是 varchar類型的變數 執行的時候相當於 truncate table ‘表名’ 所以報錯 然後用了exec() 動態執行語句

while(@i<@length+1) --迴圈語句beginif(charindex(@split,@tableList)=0) --判斷是否只有一張表beginset @tableName=@tableListendelsebegin set @tableName=substring(@tableList,0,charindex(@split,@tableList))  --截取 字串中從開始到第一個@split的字元 擷取表名endexec('truncate table '+@tableName) --執行語句set @tableList=substring(@tableList,charindex(@split,@tableList)+1,len(@tableList)) --去除已經執行過的表名 set @i=@i+1end

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.