一个小的存储过程的参数问题
写个存储过程,参数若干个,就是根据传递的参数进行查询。
参数不一,可能为空。
在存储过程里拼字符串?怎样解决。
谁给个小例子参照参照。
------解决方案--------------------最好这样写
create proc sp_Query
@Name varchar(30)=null,
@Address varchar(50)=null,
@Tel varchar(20)=null,
@EMail varchar(20)=null
as
declare @sql varchar(8000)
set @sql= 'select * from Employee where '
if @Name is not null
set @sql=@sql+ ' name like ' ' '+@Name+ '% ' ' and '
if @Address is not null
set @sql=@sql+ ' Address like ' ' '+@Address+ '% ' ' and '
if @Tel is not null
set @sql=@sql+ ' Tel like ' ' '+@Tel+ '% ' ' and '
if @EMail is not null
set @sql=@sql+ ' EMail like ' ' '+@EMail+ '% ' ' and '
set @sql=left(@sql,len(@sql)-6)
exec(@sql)
go
--可以这样调用
exec sp_Query --查询所有
go
exec sp_Query '张三 ' --查询一个人
go
exec sp_Query '张 ', '北京 ' --查询北京姓张的
go
exec sp_Query @Name= '张 ',@Email= 'Zhang ' --查询姓张、email Zhang开头的
go
--等等