我试过这样做:
if OBJECT_ID('a_b_Stage2_supA_demB') is not null
and (select COUNT(*) from a_b_Stage2_supA_demB) > 0
但是当a_b_Stage2_supA_demB
不存在时,SQL Server会返回错误,因为即使“和”条件的第一面已经失败,它仍会尝试检查第二个条件。
感谢您的帮助!
答案 0 :(得分:2)
DMV可以轻松解决您的问题:
IF EXISTS (select * from sys.tables t
INNER JOIN sys.partitions p on t.object_id = p.object_id
WHERE t.name = 'a_b_Stage2_supA_demB' and p.rows > 0)
.....
答案 1 :(得分:1)
不幸的是,这是不可能的。 SQL Server将检查以确保在编译之前存在所有对象引用(在基本代码路径中)。如果没有陈述怎么样?
begin try
exec('declare @x int = (
select 1 / COUNT(*)
from a_b_Stage2_supA_demB)');
print 'true';
end try
begin catch
print 'false';
end catch
答案 2 :(得分:0)
只需写下:
IF OBJECT_ID('a_b_Stage2_supA_demB') is not null
IF select COUNT(*) from a_b_Stage2_supA_demB > 0
.....
答案 3 :(得分:0)
IF OBJECT_ID('dept') is not NULL
BEGIN
IF exists(SELECT 1 FROM dept)
PRINT 'exists with rows'
END