嗨我写一个程序转换一个整数为十进制,但每当我执行过程我得到这个错误:转换int在程序十进制
Msg 8115, Level 16, State 8, Procedure gradesInsert, Line 9
Arithmetic overflow error converting numeric to data type numeric.Msg 8115, Level 16, State 8, Procedure gradesInsert, Line 10
Arithmetic overflow error converting numeric to data type numeric.
这是我创建的表。
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 [email protected],
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
我想要的学生平均有两个数字点和规模两个地方小数点像前(99.43)的右左。
我不知道我在这里失踪的家伙,但我会感激你的诚实意见和反馈。
谢谢你们!
感谢您的链接 –