0
我正在使用SQL Server 2008,並在我的數據庫中有一個名爲Student
的表,其中有3列name, lastname, year
。按存儲過程的不同參數搜索SQL Server
我想讓用戶有機會通過不同的屬性從數據庫中搜索學生。我想寫一個存儲過程,它將有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個屬性,寫這個幾乎是不可能的。
有沒有其他更好的方法來做到這一點,或一種引擎,它可以幫助我嗎?
+1查詢計劃'選項(重新編譯)' – 2012-04-22 12:58:45