本帖最后由 ldjssoft 于 2014-01-23 23:45:35 编辑

解决方案 »

  1.   

    SQL 语句要拼接的话,就得用 sp_executesql 了:
    Declare @CfTx int,@Date Datetime, @CfCxStr varchar(50)
    declare @sql nvarchar(max)
    Set @Date=Convert(Varchar(10),GetDate(),120)
    set @CfTx=1
    set @CfCxStr=''
    if @CfTx=1 set @CfCxStr=' and @Date<>LastJxDate'
    set @sql='select * from CkInfo where ShenHe=1' + @CfCxStr + ' and day(BeginDate)=day(@Date)'
    execute sp_executesql @sql,N'@Date Datetime',@Date=@Date
      

  2.   

    Declare @CfTx int,@Date Datetime,@CfCxStr varchar(50)
     
     
    Set @Date=Convert(Varchar(10),GetDate(),120)
    set @CfTx=1
    set @CfCxStr='select * from CkInfo where ShenHe=1 and day(BeginDate)=day('+@Date+'))'
     
    if @CfTx=1 
    set @CfCxStr=@CfCxStr+' and '+@Date+' <>LastJxDate '
    exec (@cftx) 
     
      

  3.   

    你这个SQL属于动态SQL,要用exec来执行,帮你把代码改了下,你看看是否可以执行Declare @CfTx int,@Date Datetime,@CfCxStr varchar(50)
     
     
    Set @Date=Convert(Varchar(10),GetDate(),120)
    set @CfTx=1
    set @CfCxStr=''
     
    if @CfTx=1 
    set @CfCxStr= ' and @Date<>LastJxDate '
     
    set @CfCxStr='select * from CkInfo where ShenHe=1' +@CfCxStr+ 'and day(BeginDate)=day('+@Date+'))'
    exec(@CfCxStr)
      

  4.   

    你这个SQL属于动态SQL,要用exec来执行,帮你把代码改了下,你看看是否可以执行Declare @CfTx int,@Date Datetime,@CfCxStr varchar(50)
     
     
    Set @Date=Convert(Varchar(10),GetDate(),120)
    set @CfTx=1
    set @CfCxStr=''
     
    if @CfTx=1 
    set @CfCxStr= ' and @Date<>LastJxDate '
     
    set @CfCxStr='select * from CkInfo where ShenHe=1' +@CfCxStr+ 'and day(BeginDate)=day('+@Date+'))'
    exec(@CfCxStr)