日期类型的数据必须要用引号括起来
exec ( ' insert into '+@bb+'
select * from '+@aa+'
where x_wk_pdate >= '''+@fm_date+''' and x_wk_pdate <= '''+@to_date +''' ')
exec ( ' insert into '+@bb+'
select * from '+@aa+'
where x_wk_pdate >= '''+@fm_date+''' and x_wk_pdate <= '''+@to_date +''' ')
select * from '+@aa+'
where x_wk_pdate >= '''+@fm_date+''' and x_wk_pdate <= '''+@to_date +''' ')
@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 时出错。
改成这样: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' 附近有语法错误。
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) ')