我试过这样做:
if OBJECT_ID('a_b_Stage2_supA_demB') is not null
and (select COUNT(*) from a_b_Stage2_supA_demB) > 0
但是 SQL Server 在不存在时会返回错误a_b_Stage2_supA_demB
,因为即使“and”条件的第一侧已经失败,它仍会尝试检查第二个条件。
感谢帮助!
我试过这样做:
if OBJECT_ID('a_b_Stage2_supA_demB') is not null
and (select COUNT(*) from a_b_Stage2_supA_demB) > 0
但是 SQL Server 在不存在时会返回错误a_b_Stage2_supA_demB
,因为即使“and”条件的第一侧已经失败,它仍会尝试检查第二个条件。
感谢帮助!
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)
.....
不幸的是,这是不可能的。SQL Server 将在编译之前检查以确保所有对象引用(在基本代码路径中)都存在。没有if语句怎么样?
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
写吧:
IF OBJECT_ID('a_b_Stage2_supA_demB') is not null
IF select COUNT(*) from a_b_Stage2_supA_demB > 0
.....
IF OBJECT_ID('dept') is not NULL
BEGIN
IF exists(SELECT 1 FROM dept)
PRINT 'exists with rows'
END