SQL Server 2008を使用していますが、データベースには、Student
3列のという名前のテーブルがありますname, lastname, year
。
そのデータベースからさまざまな属性で学生を検索する機会をユーザーに提供したいと思います。Student
さまざまな方法で検索を実装できる3つのパラメーター(のすべての列)を持つ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
私はステートメントを3回書かなければなりませんif()
!(階乗)回。したがって、8つの属性がある場合、これを記述することはほとんど不可能です。
それを行うための他のより良い方法、または私を助けることができる一種のエンジンはありますか?