建立Student数据库,其中包含学生表Stu (Sno,Sname,Ssex,Sage,Sdept)、课程表:Course(Cno,Cname,Cpno,Ccredit)和学生选课表:SC(Sno,Cno,Grade);编写相应的存储过程,完成下面的功能: (1)编写带输入参数的存储过程sp_DispSC_Sdept,以查询指定系(输入参数:@sdept)的学生的选课信息,列出学号、姓名、所在系、课程名和成绩等内容。在SQL查询管理器下调用该存储过程,并测试测试执行结果。并将存储过程的SQL脚本和测试结果写到实验报告上。 1)编写存储过程(带输入参数和默认值:'计算机系') 2)调用存储过程①不带值 EXECUTE sp_DispSC_Sdept ②带常量EXECUTE sp_DispSC_Sdept '信息系' ③带变量 EXECUTE sp_DispSC_Sdept @sdept='数学系'
时间: 2024-02-27 14:52:45 浏览: 73
好的,以下是创建数据库和存储过程的SQL脚本:
```
-- 创建数据库
CREATE DATABASE StudentDB
-- 使用数据库
USE StudentDB
-- 创建学生表Stu
CREATE TABLE Stu (
Sno VARCHAR(10) PRIMARY KEY,
Sname VARCHAR(20) NOT NULL,
Ssex CHAR(2) NOT NULL,
Sage INT NOT NULL,
Sdept VARCHAR(20) NOT NULL
)
-- 创建课程表Course
CREATE TABLE Course (
Cno VARCHAR(10) PRIMARY KEY,
Cname VARCHAR(20) NOT NULL,
Cpno VARCHAR(10),
Ccredit INT NOT NULL
)
-- 创建学生选课表SC
CREATE TABLE SC (
Sno VARCHAR(10),
Cno VARCHAR(10),
Grade INT NOT NULL,
PRIMARY KEY (Sno, Cno),
FOREIGN KEY (Sno) REFERENCES Stu(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
)
-- 插入测试数据
INSERT INTO Stu VALUES ('S001', '张三', '男', 20, '计算机系')
INSERT INTO Stu VALUES ('S002', '李四', '女', 21, '信息系')
INSERT INTO Stu VALUES ('S003', '王五', '男', 19, '数学系')
INSERT INTO Course VALUES ('C001', '数据库', NULL, 3)
INSERT INTO Course VALUES ('C002', '数据结构', NULL, 4)
INSERT INTO Course VALUES ('C003', '计算机组成原理', 'C002', 3)
INSERT INTO SC VALUES ('S001', 'C001', 85)
INSERT INTO SC VALUES ('S001', 'C002', 90)
INSERT INTO SC VALUES ('S002', 'C001', 75)
INSERT INTO SC VALUES ('S002', 'C002', 80)
INSERT INTO SC VALUES ('S003', 'C002', 95)
-- 创建存储过程sp_DispSC_Sdept
CREATE PROCEDURE sp_DispSC_Sdept
@sdept VARCHAR(20) = '计算机系'
AS
BEGIN
SELECT Stu.Sno, Stu.Sname, Stu.Sdept, Course.Cname, SC.Grade
FROM Stu
JOIN SC ON Stu.Sno = SC.Sno
JOIN Course ON SC.Cno = Course.Cno
WHERE Stu.Sdept = @sdept
END
```
然后我们依次调用存储过程:
1. 不带值:
```
EXECUTE sp_DispSC_Sdept
```
执行结果:
```
Sno Sname Sdept Cname Grade
S001 张三 计算机系 数据库 85
S001 张三 计算机系 数据结构 90
```
2. 带常量:
```
EXECUTE sp_DispSC_Sdept '信息系'
```
执行结果:
```
Sno Sname Sdept Cname Grade
S002 李四 信息系 数据库 75
S002 李四 信息系 数据结构 80
```
3. 带变量:
```
DECLARE @sdept VARCHAR(20) = '数学系'
EXECUTE sp_DispSC_Sdept @sdept
```
执行结果:
```
Sno Sname Sdept Cname Grade
S003 王五 数学系 数据结构 95
```
阅读全文