设为首页 收藏本站
查看: 700|回复: 0

[经验分享] sql server报错:将截断字符串或二进制数据

[复制链接]

尚未签到

发表于 2016-11-8 09:50:55 | 显示全部楼层 |阅读模式
  
  摘自:http://www.cnblogs.com/Sandheart/archive/2005/01/11/89996.html
  
  运行一个SQL的时候:报错:将截断字符串或二进制数据
  
  
  出现这种Exception,一般是由于数据类型长度造成的,例如:
数据库定义Field A varchar(50);
但在程序中定义对应Field varchar(100),并填满;
操作就会报错.
  
  看来以上提示,自己再次检查函数:
  
  SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
  
  
  
  
  
  
  
  
  
--use chic
--select * from billstatus_tab
--select * from SigerBill
--select * from bill_tab
--select * from TrackBill
--go
--sp_helptext GetPostBillList
--GO
ALTER              FUNCTION GetAccAch(@TrackNetNO varchar(50)) 
RETURNS @GetAccAch TABLE 

        [SaleNo] [varchar] (20) NULL, 
        [SaleDate] [datetime] NULL,  
        [AccountNo] [varchar] (20) NULL, 
        [AccountExec] [varchar] (30) NULL,
        [headship] [varchar] (20) NULL,--职务
        [EP_Rank] [varchar] (20) NULL, --级别
        [PostNetNO] [varchar] (20) NULL, 
        [PostNet] [varchar] (30) NULL, 
        [CustNo] [varchar] (50) NULL, 
        [CustName] [varchar] (50) NULL, 
        [CustType] [varchar] (20) NULL, 
        [FeeType] [varchar] (20) NULL,         
        [Fee] [decimal](18, 2) NULL ,
        [WeightRate] float,
        [AchRateFee] [decimal](18, 2) NULL ,
 [Inputer] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
 [InputNet] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
        [InputTime] [datetime] NULL, 
        [Remark] [varchar] (500) NULL,       //--未更改之前为50,而GetFee_tab 表里该字段为500,因此字段长度不够,造成出错
  
  [OrgRemark] [varchar] (50) NULL,
 [AddType] int,
 [ReceiptNo] [varchar] (20) NULL,
 [SupNameNo] [varchar] (20) NULL,
        [SupName] [varchar] (50) NULL,
 [DutyVolume] [decimal](18, 2) NULL,
        [OrderNo] [varchar] (50) NULL)
AS
BEGIN 
--Insert 销售业绩
INSERT INTO @GetAccAch(SaleNo,SaleDate,AccountNo,AccountExec,headship,EP_Rank,PostNetNO,PostNet,CustNo,CustName,CustType,FeeType,Fee,WeightRate,AchRateFee,
Inputer,InputNet,InputTime,Remark,OrgRemark,AddType,ReceiptNo,SupNameNo,SupName,DutyVolume,OrderNo)
SELECT G.SaleNo,G.GetFeeDate,G.ClerkNo,G.Clerk,E.headship,E.EP_Rank,G.SaleNetId,G.SaleNet,G.CustNo,G.CustName,G.CustType,GD.GFD_FeeType,GD.GFD_Price,GD.GFD_WeightRate,GD.GFD_Price*GD.GFD_WeightRate/100,
G.Inputer,G.InputNet,G.InputTime,G.Remark+GD.GFD_PurPro,'销售业绩',1,GD.GFD_ReceiptNo,E.EP_SupNameNo,E.EP_SupName,E.EP_DutyVolume,G.OrderNo
FROM GetFee_tab G inner join GetFeeDetail_tab GD on G.GetFeeID=GD.GFD_No left outer join Employee_tab E on E.UserNo=G.ClerkNo
Where G.Finance=1 /*and G.SaleNetID=@TrackNetNO*/ and (GD.GFD_FeeTypeNo=1 or GD.GFD_FeeTypeNo=4 or GD.GFD_FeeTypeNo=5) --1.充值服务费用,4。投资本金,5。其他费用
  --Insert 销售充值卡业绩
INSERT INTO @GetAccAch(SaleNo,SaleDate,AccountNo,AccountExec,headship,EP_Rank,PostNetNO,PostNet,CustNo,CustName,CustType,FeeType,Fee,WeightRate,AchRateFee,
Inputer,InputNet,InputTime,Remark,OrgRemark,AddType,ReceiptNo,SupNameNo,SupName,DutyVolume,OrderNo)
SELECT S.SP_No,S.SP_Date,S.SP_ClerkNo,S.SP_Clerk,E.headship,E.EP_Rank,S.SP_NetId,S.SP_NetName,S.SP_CustNo,S.SP_CustName,S.SP_CustType,S.SP_SVType,S.SP_Price,S.SP_WeightRate,S.SP_Price*S.SP_WeightRate/100,
S.SP_Inputer,S.SP_InputNet,S.SP_InputTime,S.SP_Remark,'销售充值卡业绩',1,S.SP_ReceiptNo,E.EP_SupNameNo,E.EP_SupName,E.EP_DutyVolume,S.SP_OrderNo
FROM WtRechCard_Tab S left outer join Employee_tab E on E.UserNo=S.SP_ClerkNO
Where S.SP_Verify=1 /*and S.SC_NetId=@TrackNetNO*/ and (S.SP_SVTypeID=1 or S.SP_SVTypeID=4) --1.充值服务费用,4。投资本金
  --Insert 销账业绩
INSERT INTO @GetAccAch(SaleNo,SaleDate,AccountNo,AccountExec,headship,EP_Rank,PostNetNO,PostNet,CustNo,CustName,CustType,FeeType,Fee,WeightRate,AchRateFee,
Inputer,InputNet,InputTime,Remark,OrgRemark,AddType,ReceiptNo,SupNameNo,SupName,DutyVolume)
SELECT C.CancelFeeID,C.CancelFeeDate,CT.ClerkNo,CT.Clerk,E.headship,E.EP_Rank,C.CancelFeeNetNO,C.CancelFeeNet,C.CustNo,C.CustName,C.CustType,C.PayExpt,C.CancelFee,C.WeightRate,C.CancelFee*C.WeightRate/100,
C.Inputer,C.InputNet,C.InputTime,C.Remark,'客户转账业绩',1,C.ReceiptNo,E.EP_SupNameNo,E.EP_SupName,E.EP_DutyVolume
FROM CancelFee_tab C inner join Customer_tab CT on C.CustNo=CT.CustNo left outer join Employee_tab E on E.UserNo=CT.ClerkNo left outer join Tab_SysParam T on T.ReferenceNo=503
Where C.Finance=1 and /*C.CancelFeeNetNO=@TrackNetNO and*/ C.PayExptNo=2 /*2.转入到充值服务费中*/ and (C.CancelFeeTypeID=2 or C.CancelFeeTypeID=3) --2.保证金 3预存款
  --Insert 客户销账..业务来源于销售
INSERT INTO @GetAccAch(SaleNo,SaleDate,AccountNo,AccountExec,headship,EP_Rank,PostNetNO,PostNet,CustNo,CustName,CustType,FeeType,Fee,WeightRate,AchRateFee,
Inputer,InputNet,InputTime,Remark,OrgRemark,AddType,ReceiptNo,SupNameNo,SupName,DutyVolume,OrderNo)
SELECT C.CancelFeeID,C.CancelFeeDate,G.ClerkNo,G.Clerk,E.headship,E.EP_Rank,C.CancelFeeNetNO,C.CancelFeeNet,C.CustNo,C.CustName,C.CustType,C.PayExpt,CD.Price,100,CD.Price,
C.Inputer,C.InputNet,C.InputTime,C.Remark,'客户变更或终止服务-销售',2,CD.ReceiptNo,E.EP_SupNameNo,E.EP_SupName,E.EP_DutyVolume,G.OrderNo
FROM CancelFee_tab C inner join CancelFeeDetail CD on C.CancelFeeID=CD.CancelFeeID
inner join GetFeeDetail_tab GD on GD.GFD_ReceiptNo=CD.ReceiptNo inner join GetFee_tab G on G.GetFeeID=GD.GFD_No left outer join Employee_tab E on E.UserNo=G.ClerkNo
Where C.Finance=1 and /*C.CancelFeeNetNO=@TrackNetNO and*/ C.PayExptNo<>2 /*2.转入到充值服务费中*/ and (C.CancelFeeTypeID=1 or C.CancelFeeTypeID=4) --1.充值服务费用,4。投资本金
  --Insert 客户销账..业务来源于充值
INSERT INTO @GetAccAch(SaleNo,SaleDate,AccountNo,AccountExec,headship,EP_Rank,PostNetNO,PostNet,CustNo,CustName,CustType,FeeType,Fee,WeightRate,AchRateFee,
Inputer,InputNet,InputTime,Remark,OrgRemark,AddType,ReceiptNo,SupNameNo,SupName,DutyVolume,OrderNo)
SELECT C.CancelFeeID,C.CancelFeeDate,S.SP_ClerkNo,S.SP_Clerk,E.headship,E.EP_Rank,C.CancelFeeNetNO,C.CancelFeeNet,C.CustNo,C.CustName,C.CustType,C.PayExpt,CD.Price,100,CD.Price,
C.Inputer,C.InputNet,C.InputTime,C.Remark,'客户变更或终止服务-充值卡',2,CD.ReceiptNo,E.EP_SupNameNo,E.EP_SupName,E.EP_DutyVolume,S.SP_OrderNo
FROM CancelFee_tab C inner join CancelFeeDetail CD on C.CancelFeeID=CD.CancelFeeID
inner join WtRechCard_Tab S on S.SP_ReceiptNo=CD.ReceiptNo left outer join Employee_tab E on E.UserNo=S.SP_ClerkNo
Where C.Finance=1 and /*C.CancelFeeNetNO=@TrackNetNO and*/ C.PayExptNo<>2 /*2.转入到充值服务费中*/ and (C.CancelFeeTypeID=1 or C.CancelFeeTypeID=4) --1.充值服务费用,4。投资本金
  --Insert 客户销账..业务来源于系统转账
INSERT INTO @GetAccAch(SaleNo,SaleDate,AccountNo,AccountExec,headship,EP_Rank,PostNetNO,PostNet,CustNo,CustName,CustType,FeeType,Fee,WeightRate,AchRateFee,
Inputer,InputNet,InputTime,Remark,OrgRemark,AddType,ReceiptNo,SupNameNo,SupName,DutyVolume)
SELECT C.CancelFeeID,C.CancelFeeDate,CT.ClerkNo,CT.Clerk,E.headship,E.EP_Rank,C.CancelFeeNetNO,C.CancelFeeNet,C.CustNo,C.CustName,C.CustType,C.PayExpt,CD.Price,100,CD.Price,
C.Inputer,C.InputNet,C.InputTime,C.Remark,'客户变更或终止服务-系统转账',2,CD.ReceiptNo,E.EP_SupNameNo,E.EP_SupName,E.EP_DutyVolume
FROM CancelFee_tab C inner join CancelFeeDetail CD on C.CancelFeeID=CD.CancelFeeID
inner join CustAcc_tab CA on CA.CA_ReceiptNo=CD.ReceiptNo inner join Customer_tab CT on C.CustNo=CT.CustNo left outer join Employee_tab E on E.UserNo=CT.ClerkNo
Where C.Finance=1 and /*C.CancelFeeNetNO=@TrackNetNO and*/ C.PayExptNo<>2 /*2.转入到充值服务费中*/ and (C.CancelFeeTypeID=1 or C.CancelFeeTypeID=4) --1.充值服务费用,4。投资本金
 and CA.CA_OrgTypeNo>=5  --CA_OrgTypeNo>=5。。为系统转账产生的数据
  RETURN 
 
END   
 
  
  
  
  
  
  
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
  
  
  
  
  
  
  解决方法:
  将参数里的Remark字段加大长度即可。
  [Remark] [varchar] (500) NULL,       //--未更改之前为50,而GetFee_tab 表里该字段为500,因此字段长度不够,造成出错

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-297290-1-1.html 上篇帖子: sql 数据类型 下篇帖子: SQL Server 2005中的分区表(六):将已分区表转换成普通表(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表