【发布时间】:2012-05-03 07:23:15
【问题描述】:
我使用的是 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 个属性,几乎不可能写出来。
有没有其他更好的方法可以帮助我?
【问题讨论】:
标签: sql sql-server-2008 search stored-procedures