私はSQL Server 2008を使用しています。私のデータベースにはStudent
というテーブルがあり、3列のname, lastname, year
があります。ストアドプロシージャのさまざまなパラメータで検索SQL Server
私は、ユーザーに異なる属性によってそのデータベースの生徒を検索する機会を与えたいと考えています。私は、異なる方法で検索を実装することができる3つのパラメータ(すべての列がStudent
)を持つ1つのストアドプロシージャを書きたいと思います。私は手順をこのよう記述する場合
:!
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クエリプラン 'option(再コンパイル)' –