创建存储过程。存储过程名为set_stu_score,功能是为指定学号和指定课程号的选课记
时间: 2024-03-23 09:37:54 浏览: 22
录设置分数。存储过程的参数为:学号(stu_id),课程号(course_id)和分数(score)。该存储过程应该包含以下 SQL 语句:
```
CREATE PROCEDURE set_stu_score
@stu_id int,
@course_id int,
@score int
AS
BEGIN
UPDATE course_selection
SET score = @score
WHERE stu_id = @stu_id AND course_id = @course_id
END
```
这个存储过程会更新 course_selection 表中指定学号和指定课程号的选课记录的分数为指定的分数。可以通过传递不同的参数来调用该存储过程。
相关问题
1)创建存储过程。存储过程名为set_stu_score,功能是为指定学号和指定课程号的选课记录设置成绩。 (2)执行存储过程set_stu_score,参数为('201810101101','1001','90')。
好的,您的问题是如何创建存储过程并执行它,我会给您提供具体的 SQL 语句。
首先,我们需要在数据库中创建存储过程。下面是一个示例:
```
CREATE PROCEDURE set_stu_score
(
@stu_id VARCHAR(20),
@course_id VARCHAR(20),
@score INT
)
AS
BEGIN
UPDATE course_selection
SET score = @score
WHERE stu_id = @stu_id AND course_id = @course_id
END
```
这个存储过程名为 set_stu_score,它有三个输入参数 @stu_id、@course_id 和 @score。它的功能是将指定学号和指定课程号的选课记录的成绩设置为指定的分数。
接下来,我们可以执行这个存储过程,并传递参数:
```
EXEC set_stu_score '201810101101', '1001', 90
```
这个语句将会执行 set_stu_score 存储过程,并将参数 '201810101101'、'1001' 和 90 传递给它。它将会将学号为 '201810101101',课程号为 '1001' 的选课记录的成绩设置为 90。
希望这个回答能够帮助到您,如果您有其他问题,欢迎随时问我。
CALL set_stu_score('201810101101', '1001', 20);为什么改变了两次数据
很抱歉,我之前回答的有误。您执行的`CALL set_stu_score('201810101101', '1001', 20)`语句,只会将score字段的值设置为20,而不是累加20。
如果您希望将score字段的值加上20,可以修改set_stu_score存储过程的代码,使用以下的UPDATE语句:
```
UPDATE course_selection SET score = score + IN_score WHERE stu_id = IN_stu_id AND course_id = IN_course_id;
```
这样,每次执行存储过程时,就会将指定学生和指定课程的成绩加上IN_score指定的值。例如:
```
CALL set_stu_score('201810101101', '1001', 20);
```
执行以上语句后,会将学号为201810101101、课程号为1001的选课记录的成绩加上20。如果再次执行同样的语句,那么该选课记录的成绩会再次加上20,因此您观察到的是成绩改变了两次。