1.利用T-SQL语句创建一个带有输入参数的存储过程ProcInsert,向Score表中插入一条记录(带4个参数:学号、课程号、平时成绩、期末成绩),并查询该学生的姓名、选修的所有课程名称,平时成绩和期末成绩(根据录入的学号查询,存储过程只有输入参数,以结果集的形式返回数据)。创建完后调用该存储过程。
时间: 2023-11-22 08:53:37 浏览: 135
表数据生成insert语句的存储过程
首先,需要先创建Score表和Course表,用于存储学生成绩和课程信息。创建Score表的T-SQL语句如下:
```
CREATE TABLE Score (
sno VARCHAR(10) NOT NULL,
cno VARCHAR(10) NOT NULL,
daily_score INT NOT NULL,
final_score INT NOT NULL,
PRIMARY KEY (sno, cno)
)
```
创建Course表的T-SQL语句如下:
```
CREATE TABLE Course (
cno VARCHAR(10) NOT NULL,
cname VARCHAR(20) NOT NULL,
PRIMARY KEY (cno)
)
```
接下来,创建带有输入参数的存储过程ProcInsert,用于向Score表中插入一条记录。T-SQL语句如下:
```
CREATE PROCEDURE ProcInsert
@sno VARCHAR(10),
@cno VARCHAR(10),
@daily_score INT,
@final_score INT
AS
BEGIN
INSERT INTO Score (sno, cno, daily_score, final_score)
VALUES (@sno, @cno, @daily_score, @final_score)
END
```
然后,需要查询该学生的姓名、选修的所有课程名称,平时成绩和期末成绩。T-SQL语句如下:
```
SELECT s.sname, c.cname, sc.daily_score, sc.final_score
FROM Score sc
INNER JOIN Student s ON sc.sno = s.sno
INNER JOIN Course c ON sc.cno = c.cno
WHERE sc.sno = @sno
```
最后,调用该存储过程,T-SQL语句如下:
```
EXEC ProcInsert '001', '001', 80, 90
EXEC ProcInsert '001', '002', 70, 85
EXEC ProcInsert '002', '001', 90, 95
EXEC ProcInsert '002', '002', 85, 80
EXEC ProcQuery '001'
```
这里假设已经有了Student表,其中包含学生信息,包括学号和姓名。ProcQuery是用于查询结果的存储过程,T-SQL语句如下:
```
CREATE PROCEDURE ProcQuery
@sno VARCHAR(10)
AS
BEGIN
SELECT s.sname, c.cname, sc.daily_score, sc.final_score
FROM Score sc
INNER JOIN Student s ON sc.sno = s.sno
INNER JOIN Course c ON sc.cno = c.cno
WHERE sc.sno = @sno
END
```
执行以上代码后,即可向Score表中插入一条记录,并查询该学生的姓名、选修的所有课程名称,平时成绩和期末成绩。
阅读全文