写出每题创建存储过程、执行存储过程的代码: 1.创建一个存储过程(名字自定),用于查看所有学生的选课信息,包括学生学号、姓名、院系、课程名字、课程号及成绩。 2.创建一个存储过程(名字自定),该存储过程的功能为:根据输入的学生姓名,查询学生信息。如果查询不到该学生,则输出“该学生不存在”,否则,输出该学生的学号、姓名、年龄、出生日期、院系信息。 3.创建一个存储过程(名字自定),该存储过程的功能为:根据输入的课程号,查询该课程的平均成绩。执行存储过程时,输出'课程号xx的平均成绩为:xx。提示:创建带输出参数的存储过程:在用户执行存储过程时,通过输出参数可以从存储过程返回值供输出使用。 4.创建一个存储过程(名字自定),用于查看某一个学生所修所有课程的最高分、对应的课程号及该学生学号。如果查找失败,则输出“不存在该学号”,否则输出该学生的成绩。
时间: 2024-03-12 16:44:11 浏览: 49
存储过程不同情况的创建和执行
1. 创建存储过程用于查看所有学生的选课信息:
```
CREATE PROCEDURE view_student_courses
AS
BEGIN
SELECT s.StudentID, s.StudentName, s.Department, c.CourseName, c.CourseID, sc.Score
FROM Student s
JOIN StudentCourse sc ON s.StudentID = sc.StudentID
JOIN Course c ON sc.CourseID = c.CourseID
END
```
执行存储过程的代码:
```
EXEC view_student_courses
```
2. 创建存储过程用于根据输入的学生姓名查询学生信息:
```
CREATE PROCEDURE find_student_by_name
@StudentName NVARCHAR(50)
AS
BEGIN
IF NOT EXISTS (SELECT * FROM Student WHERE StudentName = @StudentName)
BEGIN
PRINT '该学生不存在'
END
ELSE
BEGIN
SELECT StudentID, StudentName, Age, Birthday, Department
FROM Student
WHERE StudentName = @StudentName
END
END
```
执行存储过程的代码:
```
EXEC find_student_by_name '张三'
```
3. 创建存储过程用于根据输入的课程号查询该课程的平均成绩:
```
CREATE PROCEDURE find_avg_score_by_courseid
@CourseID INT,
@AvgScore DECIMAL(5,2) OUTPUT
AS
BEGIN
SELECT @AvgScore = AVG(Score)
FROM StudentCourse
WHERE CourseID = @CourseID
PRINT '课程号' + CONVERT(NVARCHAR(10), @CourseID) + '的平均成绩为:' + CONVERT(NVARCHAR(10), @AvgScore)
END
```
执行存储过程的代码:
```
DECLARE @AvgScore DECIMAL(5,2)
EXEC find_avg_score_by_courseid 1, @AvgScore OUTPUT
```
4. 创建存储过程用于查看某一个学生所修所有课程的最高分、对应的课程号及该学生学号:
```
CREATE PROCEDURE find_student_max_score
@StudentID INT
AS
BEGIN
IF NOT EXISTS (SELECT * FROM Student WHERE StudentID = @StudentID)
BEGIN
PRINT '不存在该学号'
END
ELSE
BEGIN
SELECT TOP 1 sc.CourseID, sc.Score, @StudentID AS StudentID
FROM StudentCourse sc
WHERE sc.StudentID = @StudentID
ORDER BY Score DESC
END
END
```
执行存储过程的代码:
```
EXEC find_student_max_score 1
```
阅读全文