在SQL Server中是否可以通过这种方式检查表是否存在?如果不存在,它将运行catch
declare @SQL varchar(4444)
select @SQL = '
begin try
select * from ServerName.DBName.dbo.TableNAme
end try
begin catch
select 1
end catch'
exec (@SQL)
我不想使用描述为here的解决方案,因为我想使用与上述表格完全相同的结构。
原因:我将循环运行几个动态查询,在ServerName,DbName和TableName上方将作为参数传递。
答案 0 :(得分:5)
如果您动态地进行操作,它应该可以工作。如果您不动态进行操作,则丢失的表将在解析时被捕获,并且不会触发CATCH。
编辑:我的意思是这样:
declare @SQL varchar(4444)
select @SQL = 'select * from ServerName.DBName.dbo.TableNAme'
begin try
exec (@SQL)
end try
begin catch
select 1
end catch