我正在使用 SQL Server 2008,在我的数据库中,我有一个名为Student
3 列的表name, lastname, year
。
我想让用户有机会通过不同的属性从该数据库中搜索学生。我想编写一个存储过程,它有 3 个参数(的所有列Student
)可以以不同的方式实现搜索。
如果我这样写程序:
Create Procedure ProcSearchStudents
@name nchar(20) = NULL,
@lastname nchar(20) = NULL,
@year int = NULL,
AS
if(@lastname = NULL)
BEGIN
Select *
from Student
where name = @name
and year = @year
END
if(@name = NULL)
BEGIN
Select *
from Student
where lastname = @lastname
and year = @year
END
if(@year = NULL)
BEGIN
Select *
from Student
where name = @name
and lastname = @lastname
END
...
...
GO
我必须写if()
声明 3!(阶乘)次。所以,如果我有 8 个属性,写这个几乎是不可能的。
有没有其他更好的方法可以做到这一点,或者一种引擎可以帮助我?