Abh*_*hek -1 sql-server stored-procedures
我创建了一个存储过程,我在其中为我的语句创建动态查询.但是我不知道我在存储过程的动态查询部分做了什么错误,我正在使用LIKE运算符.下面是我的存储过程
CREATE PROCEDURE usptestSearchEmployee
@Name varchar(50)= null,
@EmpNumber varchar(50)=null,
@Location Varchar(50)=null,
@position varchar(50)=null,
@partialmatch bit ,
@partialmatch2 bit,
@partialmatch3 bit
AS
BEGIN
declare @wheresql varchar(max)
if (@Name is not null)
BEGIN
if(@partialmatch=1)
set @wheresql=' where EmpName like ''%'' '+ @Name
else
set @wheresql=' where EmpName = '+@Name
END
PRINT @wheresql
set @wheresql='select * from employee ' +@wheresql
select @wheresql
END
Run Code Online (Sandbox Code Playgroud)
存储过程中的查询是这样创建的select * from employee where EmpName like '%' oo
,我在做错误.问候
A like
应该如下所示:select * from employee where EmpName like '%oo'
所以改变这一行:
set @wheresql=' where EmpName like ''%'' '+ @Name
Run Code Online (Sandbox Code Playgroud)
至
set @wheresql=' where EmpName like ''%'+ @Name + ''''
Run Code Online (Sandbox Code Playgroud)
正如@IanNelson所指出的那样,你也试图将SELECT
关键字与包含sql的字符串一起使用.你需要使用其中之一EXEC
EXEC(@wheresql)
Run Code Online (Sandbox Code Playgroud)
sp_executesql @wheresql
Run Code Online (Sandbox Code Playgroud)