日期类型的数据必须要用引号括起来
exec ( ' insert into  '+@bb+'
select * from '+@aa+' 
where  x_wk_pdate >= '''+@fm_date+''' and x_wk_pdate <= '''+@to_date +''' ')

解决方案 »

  1.   

    exec ( ' insert into  '+@bb+'
    select * from '+@aa+' 
    where  x_wk_pdate >= '''+@fm_date+''' and x_wk_pdate <= '''+@to_date +''' ')
      

  2.   

    create proc mp_copydata
    @sdb varchar (50),
    @tdb varchar (50),
    @fm_date datetime,
    @to_date datetime
    asdeclare @aa  varchar(30)
    declare @bb varchar(30)set @aa = @sdb +'.dbo.xy_wk_wagezj'
    set @bb = @tdb +'.dbo.xy_wk_wagezj'exec ( ' insert into  '+@bb+'
    select * from '+@aa+' 
    where  x_wk_pdate >= '''+@fm_date+''' and x_wk_pdate <= '''+@to_date+''' ')
    goexec mp_copydata
    @sdb= 'xymis2',
    @tdb = 'xyfai',
    @fm_date = '2005-10-01',
    @to_date = '2005-10-31'go将数据类型 varchar 转换为 numeric 时出错。
      

  3.   

    你的数据类型有问题,需要进行cast转化
      

  4.   

    为什么呢,我的 x_wk_pdate 都是DATETIME型的。
      

  5.   


    改成这样:create proc mp_copydata
    @sdb varchar (50),
    @tdb varchar (50),
    @fm_date datetime,
    @to_date datetime
    asdeclare @aa  varchar(30)
    declare @bb varchar(30)set @aa = @sdb + '.dbo.xy_wk_wagezj'
    set @bb = @tdb + '.dbo.xy_wk_wagezj'exec ( ' insert into  '+@bb+' 
    select * from '+@aa+' 
    where  x_wk_pdate >= cast ('+@fm_date+',as datetime) and x_wk_pdate <=  cast('+@to_date+', as datetime) ')goexec mp_copydata
    @sdb= 'xymis2',
    @tdb = 'xyfai',
    @fm_date = '2005-10-01',
    @to_date = '2005-10-31'go第 3 行: '1' 附近有语法错误。
      

  6.   

    exec ( ' insert into  '+@bb+' 
    select * from '+@aa+' 
    where  x_wk_pdate >= cast ('+@fm_date+',as datetime) and x_wk_pdate <=  cast('+@to_date+', as datetime) ')
    老大'+@to_date+',这里加上逗号,句子解读的时候当然就有问题了!应该
    where  x_wk_pdate >= cast ('+@fm_date+' as datetime) and x_wk_pdate <=  cast('+@to_date+' as datetime) ')