sql – 截断多表

前端之家收集整理的这篇文章主要介绍了sql – 截断多表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否有可能使用一个sql语句,多个表进行截断?

喜欢这个:

  1. truncate table #OBJ_AvailabilityTraining,#OBJ_AvailabilityHoliday,#Dates_temp;

问候

解决方法

不,您只能使用TRUNCATE命令截断单个表.要截断多个表,您可以使用T-sql,并通过表名重复一次截断每个表.
  1. DECLARE @delimiter CHAR(1),@tableList VARCHAR(MAX),@tableName VARCHAR(20),@currLen INT
  2.  
  3. SET @delimiter = ','
  4.  
  5. SET @tableList = 'table1,table2,table3'
  6.  
  7. WHILE LEN(@tableList) > 0
  8. BEGIN
  9. SELECT @currLen =
  10. (
  11. CASE charindex( @delimiter,@tableList )
  12. WHEN 0 THEN len( @tableList )
  13. ELSE ( charindex( @delimiter,@tableList ) -1 )
  14. END
  15. )
  16.  
  17. SELECT @tableName = SUBSTRING (@tableList,1,@currLen )
  18.  
  19. TRUNCATE TABLE @tableName
  20.  
  21. SELECT tableList =
  22. (
  23. CASE ( len( @tableList ) - @currLen )
  24. WHEN 0 THEN ''
  25. ELSE right( @tableList,len( @tableList ) - @currLen - 1 )
  26. END
  27. )
  28. END

您可以将@tableList变量中的所有表名逗号分隔,并且可以从不同的模式截断多个表(如果它们是前缀).

猜你在找的MsSQL相关文章