日期:2014-05-17  浏览次数:20448 次

一个带时间的存储过程在查询分析器中查询出错
事件探查器探查如下:exec orderformjujubechaxun @bettime=''2012-10-01 00:00:00:000'',@bs=1,@enttime=''2012-11-01 00:00:00:000'',@sqlcx=N''
在查询分析器中执行会出错,在.net 2005中执行查询有时可以出现结果
错误代码
消息 102,级别 15,状态 1,第 1 行
'2012' 附近有语法错误。 
存储过程如下
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go











-- =============================================

-- Description: 返回文件系统版本号
-- =============================================
alter PROCEDURE [dbo].[orderformjujubechaxun]
 @bs int,
 
 
 @sqlcx nvarchar(1000),

@bettime datetime,
@enttime datetime

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

  declare @sql varchar(8000)


if(@bs=1)--按订单日期查询
  begin

 if(@sqlcx='')
begin
  set @sql='select a.orderbianhao as 订单编号, shouhuof as 收货方, dizhi as 地址, dianhua as 电话, 
dingdanriqi as 订单日期, b.金额,shuoming as 说明, dakuanriqi as 打款时间, dakuanaccount as 汇入账户, fahuoriqi as 确认发货时间,
 jingshouren as 经手人, zhuguan as 主管, tuoyunren as 托运人
from orderform a left join 
(select orderbianhao as 订单编号,sum(jine) as 金额 from dbo.orderformchanpin group by orderbianhao) b
on a.orderbianhao=b.订单编号
where a.dingdanriqi  
between '''+convert(varchar(10),@bettime,120)+''' and '''+convert(varchar(10),@enttime,120)+''' order by a.orderbianhao asc '

end 
else
begin 
  set @sql='select a.orderbianhao as 订单编号, shouhuof as 收货方, dizhi as 地址, dianhua as 电话, 
dingdanriqi as 订单日期, b.金额,shuoming as 说明, dakuanriqi as 打款时间, dakuanaccount as 汇入账户, fahuoriqi as 确认发货时间,
 jingshouren as 经手人, zhuguan as 主管, tuoyunren as 托运人
from orderform a left join 
(select orderbianhao as 订单编号,sum(jine) as 金额 from dbo.orderformchanpin group by orderbianhao) b
on a.orderbianhao=b.订单编号
where a.dingdanriqi  
between '''+convert(varchar(10),@bettime,120)+''' and '''+convert(varchar(10),@enttime,120)+''' '+@sqlcx+' order by a.orderbianhao asc '

end 
  end 

 

  else--按发货日期查询
   
 if(@sqlcx='')
begin
  set @sql='select a.orderbianhao as 订单编号, shouhuof as 收货方, dizhi as 地址, dianhua as 电话, 
dingdanriqi as 订单日期, b.金额,shuoming as 说明, dakuanriqi as 打款时间, dakuanaccount as 汇入账户, fahuoriqi as 确认发货时间,
 jingshouren as 经手人, zhuguan as 主管, tuoyunren as 托运人
from orderform a left join 
(select orderbianhao as 订单编号,sum(jine) as 金额 from dbo.orderformchanpin group by orderbianhao) b
on a.orderbianhao=b.订单编号
where a.dingdanriqi 
between '''+convert(varchar(10),@bettime,120)+''' and '''+convert(varchar(10),@enttime,120)+''' order by a.orderbianhao asc '

end 
else
begin 
  set @sql='select a.orderbianhao as 订单编号, shouhuof as 收货方, dizhi as 地址, dianhua as 电话, 
dingdanriqi as 订单日期, b.金额,shuoming as 说明, dakuanriqi as 打款时间, dakuanaccount as 汇入账户, fahuoriqi as 确认发货时间,
 jingshouren as 经手人, zhuguan as 主管, tuoyunren as 托运人
from orderform a left join 
(select orderbianhao as 订单编号,sum(jine) as 金额 from dbo.orderformchanpin group by orderbianhao) b
on a.orderbianhao=b.订单编号
where a.dingdanriqi  
between '''+convert(varchar(10),@bettime,120)+''' and '''+convert(varchar(10),@enttime,120)+''' '+@sqlcx+' order by a.orderbianhao asc '

end 
 
exec (@sql)
END










------解决方案--------------------<