创建一个名为stu_proc1的存储过程:查询某系、某姓名的学生的学号、姓名、年龄,选修课程名、成绩。系名和姓名在调用该存储过程时输入,其默认值分别为“%”与“林%”。执行该存储过程,用多种参数加以测试。
时间: 2024-02-25 12:57:17 浏览: 123
好的,以下是创建stu_proc1存储过程的SQL代码:
```sql
CREATE PROCEDURE stu_proc1
(
IN dept_name VARCHAR(20) = '%',
IN stu_name VARCHAR(20) = '林%'
)
BEGIN
SELECT s.stu_id, s.stu_name, s.age, c.course_name, sc.grade
FROM student s
JOIN score sc ON s.stu_id = sc.stu_id
JOIN course c ON sc.course_id = c.course_id
JOIN department d ON s.dept_id = d.dept_id
WHERE d.dept_name LIKE dept_name AND s.stu_name LIKE stu_name;
END;
```
该存储过程接受两个参数:dept_name和stu_name,分别代表系名和学生姓名。这两个参数都有默认值,即“%”和“林%”。存储过程的主体部分使用JOIN语句连接了student、score、course和department四个表,然后筛选出符合条件的数据并返回。
接下来,我们可以使用以下代码来调用该存储过程:
```sql
-- 不带参数调用
CALL stu_proc1;
-- 带一个参数调用
CALL stu_proc1('信息工程系');
-- 带两个参数调用
CALL stu_proc1('信息工程系', '张三');
```
以上代码分别测试了不带参数、带一个参数和带两个参数的情况。根据具体的数据表和数据结构,需要根据实际情况进行调整。
阅读全文