嗨我寫一個程序轉換一個整數爲十進制,但每當我執行過程我得到這個錯誤:轉換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)的右左。
我不知道我在這裏失蹤的傢伙,但我會感激你的誠實意見和反饋。
謝謝你們!
感謝您的鏈接 –