日期:2014-05-17  浏览次数:20562 次

向临时表插入数据失败
很奇怪,在测试机上没有问题,在实际环境中就提示错误,
Msg 8152, Level 16, State 2, Procedure ItemGather, Line 17
String or binary data would be truncated.
The statement has been terminated.
存储过程源代码如下:
alter proc ItemGather
@SDate datetime,@EDate datetime ,@d char(4) output
 as 
create table #temp(
公司号  varchar(20)
,公司名称 varchar(30)
,工厂代码 varchar(20)
,工厂名称 varchar(20)
,产品编号 varchar(25)
,产品名称 varchar(30)
,客户编码 numeric(8,0)
,客户名称 varchar(50)
,实际发货净重 numeric(8,2)
,袋数 numeric(8,0)
)

insert #temp SELECT V.ordercompany as 公司号,AA.COMPANYNAME as 公司名称,
V.BRANCHPLANT as 工厂代码,S.W_PLANTNAME as 工厂名称,
 V.ITEMNUMBER as 产品编号 ,I.DESCRIPTION as 产品名称,
V.CUSTOMERID as 客户编号,A.COMPANYNAME as 客户名称,
SUM(SHIPQUANTITY) as 实际发货净重,V.BAG as 袋数 
FROM VW_SALE_DETAIL V LEFT JOIN TONE_DJY_UID_PD..TB_ADDBOOK AA 
ON V.ORDERCOMPANY=AA.ADDRESSNUMBER LEFT JOIN SYS_SYSTEM S ON 
V.BRANCHPLANT=S.W_PLANTID LEFT JOIN TONE_DJY_UID_PD..TB_ADDBOOK A 
ON V.CUSTOMERID=A.ADDRESSNUMBER LEFT JOIN TONE_DJY_UID_PD..TB_ITEM I
 ON V.ITEMNUMBER=I.ITEMNUMBER WHERE V.WEIGHOUTDATE 
BETWEEN @SDate and @EDate
and v.nextstatus='060'  Group by 
V.ordercompany,AA.COMPANYNAME,V.BRANCHPLANT,S.W_PLANTNAME,
V.ITEMNUMBER ,I.DESCRIPTION,V.CUSTOMERID,A.COMPANYNAME ,V.BAG 
ORDER BY V.ITEMNUMBER,V.CUSTOMERID

set @d='done'

------解决方案--------------------
公司号  varchar(20)
,公司名称 varchar(30)
,工厂代码 varchar(20)
,工厂名称 varchar(20)
,产品编号 varchar(25)
,产品名称 varchar(30)
,客户编码 numeric(8,0)
,客户名称 varchar(50)
--> 插入#temp表的记录中,这几个字段的值,有超过其定义长度的数据.请检查一下..