首页 > 代码库 > 案例------存储过程

案例------存储过程

创建一个存储过程(insertResult)添加学生成绩,要求输入(学号,课程名,分数)
如果输入的学号不存在,则提示“学生基本信息表中不存在此学号,请检查后重新输入”
如果输入的课程不存在,则提示“还没有这门课程,请检查后重新输入”
如果该学生的专业中没有输入的课程,则提示“该学生的专业里面没有这门课”
判断输入的成绩是否是大于0,如果小于0则提示“你太狠了吧,竟然打负分!”
判断该学生的课程成绩是否已经存在,如果存在则提示“此学生的这门课程成绩已经录入了,请不要重复录入”
最后添加成功则提示“成绩添加成功”

CREATE PROCEDURE [dbo].[insertResult]
(
@nStudentNo int, ------------------------学号
@vchCourse varchar(32), ----------------课程
@nAchievement int -------------------------成绩
)

AS

SET NOCOUNT ON

--table_student_base_info为学生基本信息表,列student_no为学号,student_specialty为专业课名称,student_achievement为专业课成绩
--table_course为课程表, 列course_name为课程名

DECLARE @nCount int SET @nCount = 0
DECLARE @nSpecialty SET @nSpecialty = 0
DECLARE @nCourse SET @nCourse = 0
DECLARE @nExistAchievement SET @bIsMark = 0

--------------------------------------------------判断学号是否存在
SELECT
@nCountNo = COUNT(*)
FROM
table_student_base_info
WHERE
table_student_base_info.student_no = @nStudentNo

IF @nCount < 1
BEGIN
PRINT ‘学生基本信息表中不存在此学号,请检查后重新输入‘
RETURN
END

------------------------------------------------判断专业课及成绩
SELECT
@nSpecialty = COUNT(*),
@nExistAchievement = student_achievement
FROM
table_student_base_info
WHERE
table_student_base_info.student_specialty = @vchCourse

IF @nSpecialty < 1
BEGIN
PRINT ‘该学生的专业里面没有这门课‘
RETURN
END

IF @nExistAchievement >= 0
BEGIN
PRINT ‘此学生的这门课程成绩已经录入了,请不要重复录入‘
RETURN
END

------------------------------------------------判断指定课程
SELECT
@nCourse = course_name
FROM
table_course
WHERE
course_name = @vchCourse

IF @nCourse < 1
BEGIN
PRINT ‘还没有这门课程,请检查后重新输入‘
RETURN
END

----------------------------------------------成绩为负
IF @nAchievement < 0
BEGIN
PRINT ‘你太狠了吧,竟然打负分!‘
RETURN
END

----------------------------------------------录入成绩
UPDATE
table_student_base_info
SET
student_achievement = @nAchievement
WHERE
table_student_base_info.student_no = @nStudentNo

PRINT ‘成绩添加成功‘