使用try-catch块在Sql-Server中删除表

时间:2017-03-06 10:10:52

标签: sql sql-server tsql

下面的代码可以运行并且非常精确,但是可以这样做而不是其他“标准”方式吗?

--Drop table if exists
begin try
    drop table #temp
end try

begin catch 
    print 'table does not exist'
end catch

--Create table
create table #temp(a int, b int)

2 个答案:

答案 0 :(得分:4)

最好使用

If Object_Id('Tempdb..#temp') Is Not Null
Drop Table #temp
create table #temp

当您打算最终创建一个#temp表时,不需要尝试catch来提供#temp Table不存在的错误消息

如果create语句在try中,它可能有一些用处

答案 1 :(得分:0)

使用EXISTS语句,IF表存在,然后只删除表。否则创建 直接表:

BEGIN TRY
  IF Object_Id('Tempdb..#temp') Is Not Null
     DROP Table #temp
  CREATE table #temp
END try
BEGIN CATCH
  PRINT 'table does not exist'
END CATCH