日期:2014-05-18  浏览次数:20467 次

一个小的存储过程的参数问题
写个存储过程,参数若干个,就是根据传递的参数进行查询。
参数不一,可能为空。
在存储过程里拼字符串?怎样解决。
谁给个小例子参照参照。


------解决方案--------------------
最好这样写

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


--等等