ストアド プロシージャにパラメータが渡されない場合は、すべての結果が返されます。
いずれかのパラメーターを渡すと、パラメーターに従って値が表示されます
alter proc SearchEmployee --'','','',''
@Name varchar(50)=null,
@Age int=null,
@Gender varchar(50)=null,
@Email varchar(50)=null
as
begin
declare @sql varchar(max), @sqlwhere varchar(max)
set @sqlwhere = '';
set @sql = 'select * from employee'
if ((@Name is not null) and @Name <> '')
begin
set @sqlwhere=' Name='+ @Name
end
else if ((@Age is not null) and @Age <> '')
begin
set @sqlwhere='and Age='+ cast(@Age as varchar(50))
end
else if ((@Email is not null) and @Email <> '')
begin
set @sqlwhere=' and email='+ @Email
end
else if ((@Gender is not null) and @Gender <> '')
begin
set @sqlwhere=' and Gender='+ @Gender
end
if (@sqlwhere <> '')
begin
set @sql = @sql + ' where ' + @sqlwhere;
end
else
begin
set @sql = @sql;
end
print @sql
exec (@sql)
end
employee
テーブル
Name Age Gender email
anurag 24 Male anu@gmail.com
abhi 22 Male abhi@gmail.com
ruchi 23 Female ruchi@gmail.com
siba 24 Male siba@gmail.com
mukua 24 Male mukua@gmail.com
prachi 24 Female prachi@gmail.com
preeti 24 Female preeti@gmail.com
実行中
SearchEmployee '','','',''
すべての結果を教えてくれます。
しかし、以下を実行するとエラーが発生します
SearchEmployee 'anurag','','',''`
select * from employee where Name=anurag
エラー:
メッセージ 207、レベル 16、状態 1、行 1
列名 'anurag' が無効です。
クエリを変更するのを手伝ってください。そして、私はどこで間違っていますか?