Если параметр не передан хранимой процедуре, он должен вернуть весь результат.динамический sql в хранимой процедуре не удалось получить требуемый результат
Если я прохожу какой-то один параметр, то значение должно отображаться в соответствии с параметром
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 [email protected]
abhi 22 Male [email protected]
ruchi 23 Female [email protected]
siba 24 Male [email protected]
mukua 24 Male [email protected]
prachi 24 Female [email protected]
preeti 24 Female [email protected]
Исполнительной
SearchEmployee '','','',''
дает мне все результаты.
Но выполнение ниже дает ошибку
SearchEmployee 'anurag','','',''`
select * from employee where Name=anurag
Ошибка:
Msg 207, Level 16, State 1, Line 1
Invalid column name 'anurag'.
Пожалуйста, помогите мне изменить запрос. И где я делаю неправильно?
Это 'select * from employee, где Name = anurag' пытается найти строки, где столбец' Name' соответствует значению столбца anurag', но есть ** нет ** колонка 'anurag'! Вы должны поместить свои строковые значения в одинарные кавычки! ** - 'select * от сотрудника, где Name = 'anurag'' –