3

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

Select count(*) from source_table

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

4

4 回答 4

2
if (select count(*) from [Table]) = 0 print 'Empty'
于 2013-05-28T14:46:17.890 回答
1

返回 -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
于 2009-09-02T16:14:55.230 回答
0

您可以除以计数结果:

Select 1/count(*) from source_table
于 2020-02-03T06:22:12.360 回答
-1

我没有使用 DTS。它在 SSIS 中得到了解决,但回过头来看,我可能在 DTS 中也可以做类似的事情。

步骤 1:选择计数并将计数保存到变量的数据流任务。选择计数需要一些工作:

select cast(count(*) as integer) as Row_Count from MyTable

然后数据流任务的输出是一个脚本组件,它是一个目的地,有一个输入列作为 ROW_COUNT,我的 ReadWriteVariables 作为 TableCount(在步骤 2 中用作输入的变量)

第 2 步:脚本任务评估该计数,如果计数为 0,则失败,否则成功。从中分叉是一条成功路线和一条失败路线。

于 2009-10-15T23:37:07.553 回答