代码如下:
if exists (select * from sysobjects where name ='SelectByQuestion_History')
drop proc SelectByQuestion_History
go
create proc SelectByQuestion_History
@DepartId varchar(50),
@BranchId varchar(50),
@UserId varchar(50),
@startTime varchar(20),
@endTime varchar(20),
@UserName varchar(50)
as
declare @sqlDepartId varchar(200)
declare @sqlBranchId varchar(200)
declare @sqlUserId varchar(200)
declare @sqlUserName varchar(200)
declare @sql varchar(3250)
declare @sql1 varchar(3250)
declare @startTimetemp varchar(20)
declare @endTimetemp varchar(20)if (@DepartId > 0 and @BranchId >0 and @UserId is not null and len(@UserId)>0 and @UserName is not null and len(@UserName) >0)
begin
set @sqlDepartId =' and DepartId ='+ @DepartId+ ''
set @sqlBranchId= ' and BranchId =' +@BranchId +''
set @sqlUserId =' and UserId=' + ''''+@UserId+''''
set @sqlUserName =' and UserName like ' + ''''+@UserName+'%'''
set @startTimetemp=''''+@startTime+'''' 
set @endTimetemp=''''+@endTime+'''' SELECT * FROM viewManualSignHistory 
where  convert(varchar(10),signtime,120) >='+ @startTimetemp+' and convert(varchar(10),signtime,120) <= '+@endTimetemp+@sqlDepartId+@sqlBranchId+@sqlUserId+@sqlUserName+' order by BranchId, DepartId,SignTime desc
set @sql = 'SELECT * FROM viewManualSignHistory 
where  convert(varchar(10),signtime,120) >='+ @startTimetemp+' and convert(varchar(10),signtime,120) <= '+@endTimetemp+@sqlDepartId+@sqlBranchId+@sqlUserId+@sqlUserName+' order by BranchId, DepartId,SignTime desc'print @sql

end
go
exec SelectByQuestion_History '6','1','yangjiali','2009-03-05','2009-03-08','杨嘉丽'
输入结果:
(0 行受影响)
SELECT * FROM viewManualSignHistory 
where  convert(varchar(10),signtime,120) >='2009-03-05' and convert(varchar(10),signtime,120) <= '2009-03-08' and DepartId =6 and BranchId =1 and UserId='yangjiali' and UserName like '杨嘉丽%' order by BranchId, DepartId,SignTime desc问题是:
红色的结果怎么都是0行
但是蓝色的同样的语句知识用print打印出来后再执行就可以有3行数据
不知道是为什么?