第七章上机练习
2017-02-25 14:47
351 查看
上机练习一:
USE MySchool GO EXEC sp_columns Student --查看表Student中列的信息 EXEC sp_help Student --查看表Student的所有信息 EXEC sp_helpconstraint Student --查看表Student的约束上机练习二:
/*---创建存储过程----*/ CREATE PROCEDURE usp_grade_subject AS SELECT GradeName,SubjectName,ClassHour FROM Grade INNER JOIN Subject ON Grade.GradeId=Subject.GradeId ORDER BY Subject.GradeId,SubjectNo GO /*---调用执行存储过程---*/ EXEC usp_grade_subject
上机练习三:
CREATE PROCEDURE usp_query_subject @GradeName VARCHAR(50) = NULL AS IF @GradeName IS NULL SELECT GradeName,SubjectName,ClassHour FROM Grade LEFT JOIN Subject ON Grade.GradeId=Subject.GradeId UNION SELECT GradeName,' ',SUM(ClassHour)FROM Grade LEFT JOIN Subject ON Grade.GradeId=Subject.GradeId GROUP BY GradeName ELSE SELECT GradeName,SubjectName,ClassHour FROM Grade LEFT JOIN Subject ON Grade.GradeId=Subject.GradeId WHERE GradeName=@GradeName UNION SELECT GradeName,' ',SUM(ClassHour)FROM Grade LEFT JOIN Subject ON Grade.GradeId=Subject.GradeId WHERE GradeName=@GradeName GROUP BY GradeName GO EXEC usp_query_subject 's2'
上机练习四:
CREATE PROCEDURE usp_query_subject @CourseNum INT OUTPUT, @HourNum INT OUTPUT, @GradeName VARCHAR(50) AS IF LEN(@GradeName) = 0 BEGIN PRINT '学期名称不能为空' RETURN END PRINT '---------学期课程信息如下------------' SELECT GradeName,SubjectName,ClassHour FROM Grade LEFT JOIN Subject ON Grade.GradeId=Subject.GradeId WHERE GradeName=@GradeName SELECT @CourseNum=COUNT(0), @HourNum=SUM(ClassHour) FROM Grade INNER JOIN Subject ON Grade.GradeId=Subject.GradeId WHERE GradeName=@GradeName GO
上机练习五:
CREATE PROCEDURE usp_insert_subject
@SubjectNo int OUTPUT,
@GradeId int OUTPUT,
@GradeName varchar(50),
@SubjectName varchar(50),
@ClassHour int = 36
AS
DECLARE @errNum int
SET @errNum = 0
IF (LEN(RTRIM(@SubjectName))=0 OR LEN(RTRIM(@GradeName))=0)
RETURN -1
BEGIN TRANSACTION
IF NOT EXISTS(SELECT * FROM Grade WHERE GradeName = @GradeName)
BEGIN
INSERT INTO Grade (GradeName) VALUES (@GradeName)
SET @errNum = @errNum + @@ERROR
SELECT @GradeId=@@IDENTITY
END
ELSE
SELECT @GradeId=GradeId FROM Grade WHERE GradeName = @GradeName
INSERT INTO Subject (SubjectName,ClassHour,GradeId)
VALUES (@SubjectName,@ClassHour,@GradeId)
SET @errNum = @errNum + @@ERROR
SELECT @SubjectNo=@@IDENTITY
IF (@errNum > 0)
BEGIN
ROLLBACK TRANSACTION
RETURN 0
END
ELSE
BEGIN
COMMIT TRANSACTION
RETURN 1
END
GO
--调用存储过程
DECLARE @SubjectNo int
DECLARE @GradeId int
DECLARE @GradeName varchar(50)
DECLARE @SubjectName varchar(50)
DECLARE @ClassHour int
DECLARE @rt int
SET @GradeName = 'Y2'
SET @SubjectName = 'Linux'
SET @ClassHour = 10
EXEC @rt=usp_insert_subject @SubjectNo OUTPUT,@GradeId OUTPUT,@GradeName,@SubjectName,@ClassHour
IF (@rt = 1)
BEGIN
PRINT '增加课程'+@SubjectName+'记录成功'
PRINT '学期编号是' + CAST(@GradeId AS varchar(10)) + ',学期名称是' + @GradeName
PRINT '课程编号是' + CAST(@SubjectNo AS varchar(10)) + ',课程名称是' + @SubjectName
END
ELSE if (@rt = 0)
PRINT '增加课程记录失败!'
ELSE
PRINT '学期名称或课程名称不能为空,请重新执行!'
GO
相关文章推荐
- 第七章上机练习2
- HTML第七章上机练习1
- HTML第七章上机练习2
- 第七章 上机练习1 2
- HTML第七章上机练习1
- 第七章上机练习3
- HTML第七章上机练习一
- 第七章上机练习1
- 第七章上机练习2
- 第七章上机练习2 老师
- 第七章上机练习4
- 第七章上机练习2 视频宣传片 有瑕疵
- 第七章上机练习1
- 2016年 成渝校招软件上机练习
- c++primer plus第七章编程练习的解答1-8
- C++ primer plus(sixth edition) 编程练习答案(answers for programing exercises)第七章(chapter 7) 6-10
- sdut 面向对象程序设计上机练习九(对象指针)
- 面向对象程序设计上机练习十一(运算符重载)
- 面向对象程序设计上机练习一(函数重载)
- 面向对象程序设计上机练习五(类和对象)