【发布时间】:2016-08-21 13:12:49
【问题描述】:
大家好,我编写了一个将整数转换为十进制的程序,但是每当我执行该程序时,都会出现以下错误:
消息 8115,第 16 级,状态 8,程序等级插入,第 9 行
将数值转换为数值数据类型时出现算术溢出错误。消息 8115,第 16 级,状态 8,程序等级插入,第 10 行
将数值转换为数值数据类型时出现算术溢出错误。
这是我创建的表。
CREATE TABLE French
(
StudentId int Primary key,
StudentName varchar(75),
Class varchar (15),
SubjectName varchar(25) DEFAULT ('Mathematics'),
FirstPeriod int,
SecondPeriod int,
ThirdPeriod int,
FirstSemesterExam int,
FirstSemesterAvg decimal(2,2),
FourthPeriod int,
FifthPeriod int,
SixPeriod int,
SecondSemesterExam int,
SecondSemesterAvg decimal(2,2)
)
这是过程及其调用方式。
create proc gradesInsert
@StuId int, @p1 int, @p2 int, @p3 int, @firstExam int,
@p4 int, @p5 int, @p6 int, @SecondExam int
As
declare @add1 int = @p1 + @p2 + @p3 + @firstExam
declare @add2 int = @p4 + @p2 + @p6 + @SecondExam
declare @firstAvg decimal(2,2) = cast(@add1 / 4.0 as decimal(2,2))
declare @SecondAvg decimal(2,2) = cast(@add2 / 4.0 as decimal(2,2))
begin
update dbo.French
Set FirstPeriod = @p1,
SecondPeriod = @p2,
ThirdPeriod = @p3,
FourthPeriod =@p4,
FirstSemesterExam = @firstExam,
FirstSemesterAvg = @firstAvg,
FifthPeriod = @p5,
SixPeriod = @p6,
SecondSemesterExam = @SecondExam,
SecondSemesterAvg = @SecondAvg
where
dbo.French.StudentId = @StuId
end
Exec gradesInsert 1, 90, 98, 77, 69, 70, 72, 99, 100
我希望学生平均值在点的左侧有两个数字,并在小数点右侧缩放两个位,例如 ex (99.43)。
我不知道我在这里缺少什么,但我会感谢你们诚实的意见和反馈。
谢谢各位!!
【问题讨论】:
标签: sql-server stored-procedures types