当前位置:首页 > 数据库系统及应用教程(SQL Server 2008)习题1-8章答案
WHERE SNAME=@S_NAME
GO
6.在教学管理数据库中,创建一个名为GRADE_INFO的存储过程,其功能是查询某门课程的所有学生成绩。显示字段为:CNAME,SNO,SNAME,GRADE。
解:
USE JXGL GO
CREATE PROCEDURE GRADE_INFO @C_NAME VARCHAR(50)
AS
SELECT CNAME,SC.SNO,SNAME,GRADE
FROM S JOIN SC ON S.SNO=SC.SNO JOIN C ON SC.CNO=C.CNO AND CNAME=@C_NAME
GO
7.在教学管理数据库中,创建一个INSERT触发器TR_C_INSERT,当在C表中插入一条新记录时,触发该触发器,并给出“你插入了一门新的课程!”的提示信息。
解:
CREATE TRIGGER TR_C_INSERT ON C FOR INSERT
AS
PRINT '你插入了一门新的课程!'
GO
8-8 在教学管理数据库中,创建一个AFTER触发器,要求实现以下功能:在SC表上创建一个插入、更新类型的触发器TR_GRADE_CHECK,当在GRADE字段中插入或修改成绩后,触发该触发器,检查分数是否在0~100之间。
解:
CREATE TRIGGER TR_GRADE_CHECK ON SC FOR
INSERT,UPDATE
AS
DECLARE @SC_grede tinyint SELECT @SC_grade=SC.grade FROM SC
IF (@SC_grade NOT BETWEEN 0 AND 100)
PRINT '你插入的成绩不在0~100之间!'
GO
9.在教学管理数据库中,创建用户定义函数C_MAX,根据输入的课程名称,输出该门课程最高分数的同学学号。
解:
USE JXGL GO
25
CREATE FUNCTION C_MAX (@C_NAME CHAR(8)) RETURNS REAL AS
BEGIN
DECLARE @S_MAX REAL SELECT @S_MAX=MAX(GRADE)
FROM SC JOIN C ON SC.CNO=C.CNO AND C.CNAME=@C_NAME RETURN @S_MAX
END GO
10.在教学管理数据库中,创建用户定义函数SNO_INFO,根据输入的课程名称,输出选修该门课程的学生学号、姓名、性别、系部、成绩。
解:
USE JXGL GO
CREATE FUNCTION SNO_INFO (@C_NAME CHAR(8)) RETURNS TABLE AS
RETURN(SELECT S.SNO,SNAME,SEX,SDEPT,GRADE
FROM S JOIN SC ON S.SNO=SC.SNO JOIN C ON SC.CNO=C.CNO AND C.CNAME=@C_NAME)
GO
26
共分享92篇相关文档