declare @iNO int
declare @dt datetime
declare @strSQL varchar(200)
set @iNO = 5
set @dt = getdate()select @strSQL='SELECT TOP '+convert(varchar(8),@iNO)+' [birthdate] FROM [dbo].[employees] where [birthdate]<'+convert(varchar(20),@dt)
EXEC(@strSQL)

解决方案 »

  1.   

    declare @iNO int
    declare @dt datetime
    set @iNO = 5
    set @dt = getdate()
    declare @sql varchar(200)
    set @sql='SELECT TOP '+cast( @iNO as char(1) )+' [cqrq] FROM [dbo].[jzx_hxgl_hxjh] where [cqrq]<'''+cast(@dt as char(20)) + ''''
    EXEC (@sql)
      

  2.   

    declare @iNO int
    declare @dt datetime
    set @iNO = 5
    set @dt = getdate()
    declare @sql varchar(200)
    set @sql='SELECT TOP '+cast( @iNO as char(1) )+' [birthdate] FROM [dbo].[employees] where [birthdate]<'''+cast(@dt as char(20)) + ''''
    EXEC (@sql)
      

  3.   

    declare @iNO int
    declare @dt datetime
    set @iNO = 5
    set @dt = getdate()EXEC ('SELECT TOP '+convert(varchar(8),@iNO)+' [birthdate] FROM [dbo].[employees] where [birthdate]<'''+convert(varchar(20),@dt) + '''')
      

  4.   

    你这么修改一下。你传参数的时候,没有考虑符号。
    EXEC ('SELECT TOP '+@iNO+' [birthdate] FROM [dbo].[employees] where [birthdate]<'''+@dt+'''')