向临时表插入数据失败
很奇怪,在测试机上没有问题,在实际环境中就提示错误,
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表的记录中,这几个字段的值,有超过其定义长度的数据.请检查一下..