SQL存储过程的问题,这道题大概要怎么写?

编写一存储过程(选课情况综合查询),可分别按:学号,学生姓名,课程编号,课程名称,学年,……,等查询学生的选课情况,查询结果显示(学号,学生姓名,课程编号,课程名称,选修学年,选修学期,成绩)
提示:根据指定的查询类别,分别写出对应的查询语句

create or replace procedure x_s_xuanke_info (xuehao in varchar2, --学号
name in varchar2, --学生姓名
... --别的入参 也可以不用所有参数 写一个type类型入参(1学号、2姓名这样) 后面再跟一个值入参

--返回值也可以加在这里 out入参
) is

sID number; --查询出来的学号
sName varchar2(20); --查询出来的学生姓名
... --其它查询出来的结果

begin

--初始化变量 (number型 赋值0)
sID := 0;

--根据学号
if nvl(xuehao,' ') != ' ' then
select 学号, 姓名, ...
into sID, sName, ...
from 相关表 where 学号 = xuehao;
end if;
--根据姓名
if nvl(name,' ') != ' ' then
select 学号, 姓名, ...
into sID, sName, ...
from 相关表 where 姓名 = name;
end if;

... --其它查询条件

end x_s_xuanke_info;

https://wenku.baidu.com/view/2caa3ffbaf45b307e9719799.html

//这根据学号查询,还可以课程名。等等,换汤不换药

create proc findStu @numOfStu char(8)
as
select 学号,学生姓名,课程编号,课程名称,选修学年,选修学期,成绩
from 学生基本信息 x (如有可能还要多表查询,如:学生基本信息 x,成绩表 c)
where @numOfStu = 学号

多条件查询,引用文章,相信你能看懂:
https://www.cnblogs.com/chiname/articles/144712.html

不知道这样的思路是否正确。
给存储过程的所有参数赋默认值。
如果某一参数不是默认值。
那么按照这个参数来进行查询。

给两个参数,第一个参数为查询条件,第二个参数为查询的值

Create Procedure Student_XuanKe_Search
@xuehao varchar(30) = '', --学号
@name nvarchar(30)='', --学生姓名
@kcname nvarchar(50)='' --课程名称
Declare @QueryString VarChar(Max)
Select @QueryString = "select * from student_xuanke A left join student B on A.studentid=B.id left join kecheng C on A.kechengid=C.Id ";
Select @QueryString = @QueryString + ' where 1 = 1 '
If Len(@xuehao) > 0
Begin
Select @QueryString = @QueryString + ' and B.xuehao = '"+@xuehao+"''
End
If Len(@name) > 0
Begin
Select @QueryString = @QueryString + ' and B.name = '"+@name+"''
End
If Len(@kcname) > 0
Begin
Select @QueryString = @QueryString + ' and C.kcname = '"+@kcname+"''
End
exec(@QueryString)

    不知是否会有语法错误,我这边没有表结构,需要自己测试一下