如果查询未返回结果,则返回错误

时间:2014-06-02 19:29:09

标签: sql sql-server error-handling

我正在使用OPENROWSET函数创建一个SQL作业,以将视图中的数据导出为ex​​cel。

我只是想知道是否有一种方法让查询返回错误,如果没有返回数据行,即使查询本身正在正确执行。

我正在寻找的方法是,如果下面的查询要返回0行数据,执行将返回"错误"结果。然而,如果它返回一行或多行数据,它将正常执行。

CustSalesBreakdown是我创建的一个视图,它引入了客户的销售,按月/年分组。作为" Total"是十进制值,我将其转换为float,以便相应地对其进行排序。

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                   'Excel 8.0;Database=E:\Reports\CustSalesBreakdownTest.xls;', 
                   'SELECT * FROM [Test$]')
SELECT 
[Account],[Ref#],[CustomerName],[Phone],[Rep],[Period-MTD]
,[Invoices],[Credits],[Total],[FilterDate]

from custsalesbreakdown
where datediff(month,[FilterDate],getdate())=0 and [Rep] = '18'
order by cast([Total] as float) Desc;

此查询成功执行,但由于当时没有数据要返回,因此不返回任何数据。

原因是如果它没有返回任何数据行,我希望作业继续执行另一个步骤(失败 - 转到步骤X),否则如果它返回了值(On Success - Go to Step Y)。

SAMC

1 个答案:

答案 0 :(得分:0)

除以零总是会抛出错误。

select 1/count(*) from table where column = 'something'