Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将数值转换为数据类型数值时出现算术溢出错误_Sql_Sql Server - Fatal编程技术网

Sql 将数值转换为数据类型数值时出现算术溢出错误

Sql 将数值转换为数据类型数值时出现算术溢出错误,sql,sql-server,Sql,Sql Server,将精度大于精度的值转换为要转换的值会导致错误 以下是重现错误的示例: ALTER FUNCTION [dbo].[avgGpa]() RETURNS decimal(3,2) AS BEGIN DECLARE @CalcGPA decimal(10,2) DECLARE @CalcGPA2 decimal(3,2) SELECT @CalcGPA = SUM(cast(GPA AS decimal(10,2))) from dbo.Students SELECT

将精度大于精度的值转换为要转换的值会导致错误

以下是重现错误的示例:

ALTER FUNCTION [dbo].[avgGpa]()
RETURNS decimal(3,2)
AS
BEGIN
    DECLARE @CalcGPA decimal(10,2)
    DECLARE @CalcGPA2 decimal(3,2)

    SELECT @CalcGPA = SUM(cast(GPA AS decimal(10,2))) from dbo.Students
    SELECT @CalcGPA2 = cast(ROUND((@CalcGPA / 1000),2) AS decimal(3,2))

    RETURN @CalcGPA2
END

给出更大的精度值

   declare @d10 decimal(10,2)=12345678.12

   select CAST(@d10 as decimal(3,2))

(1) 你为什么在函数中这样做?(2) 为什么要将GPA存储为字符串?(3) ?此链接回的重复问题已删除。看起来是过度热情的节制?
ALTER FUNCTION [dbo].[avgGpa]()    
RETURNS decimal(15,2)