当前位置: 代码迷 >> Sql Server >> 存储过程中 SQL字符串拼接有关问题
  详细解决方案

存储过程中 SQL字符串拼接有关问题

热度:43   发布时间:2016-04-27 16:01:55.0
存储过程中 SQL字符串拼接问题
CREATE   PROCEDURE     T_ZzSwl                                     --/组装实物量_生产
@b_date   datetime=null,
@e_date   datetime=null,
@bc   nvarchar(2)=null,
@Ry   nvarchar(10)=null

AS
begin
set   nocount   on
DECLARE   @sql   varchar(8000) --/sql语句
DECLARE   @BD   varchar(4000) --/开始日期
DECLARE   @ED   varchar(4000) --/结束日期
DECLARE   @BED   varchar(4000) --/开始日期+结束日期

DECLARE   @BDT   varchar(4000) --/开始日期
DECLARE   @EDT   varchar(4000) --/结束日期
DECLARE   @BEDT   varchar(4000) --/开始日期+结束日期


DECLARE   @STJ   varchar(4000) --/开始条件
DECLARE   @ZTJ   varchar(4000) --/中间条件


set   @bc=ltrim(rtrim(@bc))
set   @Ry=ltrim(rtrim(@Ry))

SET   @BD= '   AND   日期   =   ' ' '+convert(varchar(10),@b_date,120)+ ' ' ' ' --/开始日期
SET   @ED= '   AND   日期   =   ' ' '+convert(varchar(10),@e_date,120)+ ' ' ' ' --/结束日期
SET   @BED= '   AND   日期   between   ' ' '+convert(varchar(10),@b_date,120)+ ' ' '   and   ' ' '+convert(varchar(10),@e_date,120)+ ' ' ' ' --/开始+结束日期(sql字符串   开使用)

SET   @BDT= '   OR   日期   =   ' ' '+convert(varchar(10),@b_date,120)+ ' ' ' ' --/开始日期
SET   @EDT= '   OR   日期   =   ' ' '+convert(varchar(10),@e_date,120)+ ' ' ' ' --/结束日期
SET   @BEDT= '   OR   日期   between   ' ' '+convert(varchar(10),@b_date,120)+ ' ' '   and   ' ' '+convert(varchar(10),@e_date,120)+ ' ' ' ' --/开始+结束日期(sql字符串   中间用)


SET   @STJ= '   '
SET   @ZTJ= '   '

SET   @sql= 'SELECT   日期,班次,组长,人员1,人员2,人员3,人员4,学徒   from   表1   where   1=1 '

IF   @b_date   IS   NOT   NULL
SET   @[email protected]
SET   @[email protected]

IF   @b_date   IS   NULL
SET   @[email protected]
SET   @[email protected]


IF   @b_date   IS   NOT   NULL   AND   @e_date   IS   NOT   NULL
SET   @[email protected]
SET   @[email protected]


IF   @bc   IS   NOT   NULL
SET   @[email protected]+ '   AND   班次   =   ' ' '[email protected]+ ' ' ' '
SET   @[email protected]+ '   AND   班次   =   ' ' '[email protected]+ ' ' ' '


IF   @Ry   IS   NOT   NULL
--/问题出在下面这句****************
SET   @[email protected][email protected]+ '   AND   组长   =   ' ' '[email protected]+ ' ' ' '[email protected]+ '   AND   姓名1   =   ' ' '[email protected]+ ' ' ' '[email protected]+ '   AND   姓名2   =   ' ' '[email protected]+ ' ' ' '[email protected]+ '   AND   姓名3   =   ' ' '[email protected]+ ' ' ' '[email protected]+ '   AND   姓名4   =   ' ' '[email protected]+ ' ' ' '[email protected]+ '   AND   学徒   =   ' ' '[email protected]+ ' ' ' '+ 'order   by   日期,班次 '
--如果把   @ZTJ   换成   '   OR   日期   between   ' ' '+convert(varchar(10),@b_date,120)+ ' ' '   and   ' ' '+convert(varchar(10),@e_date,120)+ ' ' ' '   则可以执行   用变量则返回代码=0  
  相关解决方案