2010-11-12 76 views
0

我已存储的与下面的行的程序,除以零误差(存储过程)

DECLARE @DateRun as datetime                
Select @DateRun=LastRunDate from tblBatchRun where JobId = 1        
INSERT INTO tblRawTestScore                 
select * from vwOverallTestScores where TimeCompleted > @DateRun 

我现在得到像之一的错误如下所示,

消息8134,级别16,状态1,过程 sp_CopyTestScoresRun,第9行除以 遇到零错误。

当我修改上面的存储过程线条状,

INSERT INTO tblRawTestScore                 
select * from vwOverallTestScores where TimeCompleted > (Select LastRunDate from tblBatchRun where JobId = 1) 

我的存储过程执行,现在罚款。

任何人都可以帮我在这个PLS?

+0

您可以运行Profiler来获取究竟是在哪里你得到鸿沟情景发生的痕迹通过零。 – cairnz 2010-11-12 14:45:45

回答

0

对我来说,喜欢从tblbatchrun中选择lastrundate,其中jobid = 1没有行。

在第一种情况下,你在你的变量,它无法比拟的(这将有问题的铸造周围还有东西),而在第二个版本的SP不会从得到任何结果回来得到一个NULL结果子选择,因此不做比较,也不会引发错误。

+0

我得到值在我的变量(不是空值).Erieough错误被抛出。 – Nanda 2010-11-12 12:28:41

+0

vwOverallTestScores的定义是什么? – cairnz 2010-11-12 12:48:25

+0

我不认为NULL结果会有这种效果。如果@DateRun为空,那么“select ... where TimeCompleted> @DateRun”将只返回没有行吗? – 2010-12-08 22:52:19

0

什么样的价值,您在此声明获得:

选择tblBatchRun LastRunDate其中的JobId = 1

+0

日期时间值例如,2010-11-08 08:51:20.017 – Nanda 2010-11-12 13:26:17