日期:2014-05-16  浏览次数:20721 次

究竟是我的程序代码错误还是数据表运算时发生数据溢出?
最近设计了一段简单的代码,稍微复杂的是里面有一个幂函数,每当程序运行到第三行时就提示“消息 3623,级别 16,状态 1,第 3 行出现无效的浮点操作。”

DECLARE @iscontr2 float
SELECT  @iscontr2=POWER(( a.ori_value - b.min_2014 ) / ( b.max_2014- b.min_2014 ),
                              1.4) * 40 + 60
FROM    court_stat a
        INNER JOIN range_rule b ON a.index_id = b.index_id
    UPDATE  a
    SET     a.eva_score = CASE WHEN b.variation_char = 1
                                    AND a.eva_score > b.min_2014 THEN 60
                               WHEN b.variation_char = 2
                                    AND a.eva_score < b.min_2014 THEN 60
                               ELSE ( CASE WHEN @iscontr2 < 60 THEN 60
                                           WHEN @iscontr2 > 100 THEN 100
                                           ELSE @iscontr2
                                      END )
                          END
    FROM    court_stat a
            INNER JOIN range_rule b ON a.index_id = b.index_id
GO
UPDATE  dbo.court_stat
SET     ded_score = CASE WHEN eva_score < 80 THEN ( 80 - eva_score ) * 0.01
                         ELSE 0
                    END
FROM    court_stat a
        INNER JOIN range_rule b ON a.index_id = b.i