如果表为空,如何返回失败

时间:2009-09-02 16:06:41

标签: sql-server-2005 ssis dts

使用SQL Server 2005,但仍使用DTS。我需要添加一个步骤来检查表是否为空,如果是,则以某种方式使步骤失败。很容易检查表是否为空:

Select count(*) from source_table

但是回归0也是成功的。如果它是0,我想要失败(这样我可以分叉到另一个选项,给我们发电子邮件,跳过一些步骤)。

4 个答案:

答案 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则失败,否则成功。从中分叉是成功路线和失败路线。