存储过程出错!
create proc mp_copydata
@sdb varchar (50),
@tdb varchar (50),
@fm_date datetime,
@to_date datetime
as
declare @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 +' ')
go
exec mp_copydata
@sdb= 'xymis2',
@tdb = 'xyfai',
@fm_date = '2005-10-01',
@to_date = '2005-10-31'
go
服务器: 消息 170,级别 15,状态 1,行 3
第 3 行: '1' 附近有语法错误。
问题点数:30、回复次数:9Top
1 楼samfeng_2003(凤翼天翔)回复于 2005-12-16 12:27:59 得分 0
日期类型的数据必须要用引号括起来
exec ( ' insert into '+@bb+'
select * from '+@aa+'
where x_wk_pdate >= '''+@fm_date+''' and x_wk_pdate <= '''+@to_date +''' ')Top
2 楼samfeng_2003(凤翼天翔)回复于 2005-12-16 12:29:13 得分 15
第二个问题,我没有看到有1的存在啊Top
3 楼zjcxc(邹建)回复于 2005-12-16 12:42:09 得分 15
exec ( ' insert into '+@bb+'
select * from '+@aa+'
where x_wk_pdate >= '''+@fm_date+''' and x_wk_pdate <= '''+@to_date +''' ')
Top
4 楼weifai88(weifai88)回复于 2005-12-16 13:27:26 得分 0
create proc mp_copydata
@sdb varchar (50),
@tdb varchar (50),
@fm_date datetime,
@to_date datetime
as
declare @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+''' ')
go
exec mp_copydata
@sdb= 'xymis2',
@tdb = 'xyfai',
@fm_date = '2005-10-01',
@to_date = '2005-10-31'
go
将数据类型 varchar 转换为 numeric 时出错。
Top
5 楼samfeng_2003(凤翼天翔)回复于 2005-12-16 13:30:28 得分 0
你的数据类型有问题,需要进行cast转化Top
6 楼weifai88(weifai88)回复于 2005-12-16 13:34:13 得分 0
为什么呢,我的 x_wk_pdate 都是DATETIME型的。Top
7 楼weifai88(weifai88)回复于 2005-12-16 13:37:11 得分 0
改成这样:
create proc mp_copydata
@sdb varchar (50),
@tdb varchar (50),
@fm_date datetime,
@to_date datetime
as
declare @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) ')
go
exec mp_copydata
@sdb= 'xymis2',
@tdb = 'xyfai',
@fm_date = '2005-10-01',
@to_date = '2005-10-31'
go
第 3 行: '1' 附近有语法错误。Top
8 楼samfeng_2003(凤翼天翔)回复于 2005-12-16 13:40:49 得分 0
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) ')
Top
9 楼weifai88(weifai88)回复于 2005-12-16 13:53:55 得分 0
不好意思,因为用多的PB,都混乱了。但改过来还是有问题,老是说
第 3 行: '1' 附近有语法错误。
Top




