使用SQL Server 2005,但仍使用DTS。我需要添加一个步骤来检查表是否为空,如果是,则以某种方式使步骤失败。很容易检查表是否为空:
Select count(*) from source_table
但是回归0也是成功的。如果它是0,我想要失败(这样我可以分叉到另一个选项,给我们发电子邮件,跳过一些步骤)。
答案 0 :(得分:1)
if (select count(*) from [Table]) = 0 print 'Empty'
答案 1 :(得分:0)
返回-1怎么样?
Select
case when count(*)>=0 then count(*) else -1 end
from
source_table
如果您确实想提出错误,可以使用RAISERROR执行此操作:
Declare @RowCount as bigint
set @RowCount=count(*) from source_table
if RowCount =0
RAISERROR ('error message', 50000, 1) with log
答案 2 :(得分:0)
您可以除以计数结果:
Select 1/count(*) from source_table
答案 3 :(得分:-1)
我没有使用DTS。它在SSIS中得到了解决,但回顾过去,我可能在DTS中做过类似的事情。
步骤1:数据流任务,选择计数并将计数保存到变量。选择计数需要一些工作:
select cast(count(*) as integer) as Row_Count from MyTable
然后数据流任务的输出是一个脚本组件,它是一个目标,输入列为ROW_COUNT,我的ReadWriteVariables为TableCount(在步骤2中用作输入的变量)
步骤2:评估该计数的脚本任务,如果计数为0则失败,否则成功。从中分叉是成功路线和失败路线。