- 浏览: 2058898 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (1409)
- asp/asp.net学习 (241)
- oracle (10)
- delphi (295)
- java (27)
- pb (1)
- 每日点滴 (49)
- 学习方法 (40)
- 思想方面 (104)
- C语言 (5)
- C++ (1)
- 代码重构经验 (5)
- 软件工程 (3)
- 数据库 (99)
- 英语学习 (3)
- mysql (1)
- 该关注的网站或者网页 (42)
- 总结 (7)
- 要去做的事情 (33)
- 算法 (1)
- 网络方面 (29)
- 随感 (96)
- 操作系统 (36)
- UML (12)
- 常用工具的使用 (55)
- 脚本 (7)
- 汇编 (62)
- 数据结构 (2)
- 财务 (38)
- 语文作文 (16)
- 法律 (1)
- 股票 (88)
最新评论
-
devwang_com:
可以,学习了~~
列出文件夹下所有文件夹的树形结构--Dos命令 tree的使用 -
hvang1988:
不管用啊 frxrprt1.PreviewForm.Pare ...
fastReport预览时嵌入到别的窗体 -
00915132:
我也有这个疑问,非常 感 谢
left join加上where条件的困惑 --SQL优化 -
zhuyoulong:
学习了,高效读书
软件架构师要读的书 -
nTalgar:
非常感谢分享!
Application.ProcessMessages用法:
摘自: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,因此字段长度不够,造成出错
评论
当参数长度超19000后,就报这个错。低于这个字就可以。
请问应如何解决???
我的邮箱 njl_041x@163.com
发表评论
-
form打开时的关闭代码
2011-10-25 20:29 1574摘自:http://topic.csdn.n ... -
TUpdateSQL更新问题 提示Update Failed
2011-08-29 20:26 1238摘自:http://topic.csdn.net/u/200 ... -
图解如何用Eurekalog跟踪程序错误
2011-08-12 07:28 941图解如何用Eurekalog跟踪程序错误 摘自:h ... -
VirtualBox 复制VDI 并能创建新的虚拟机
2011-07-21 11:14 2739摘自:http://www.nonabyte.net/how- ... -
截获所有异常 不报错
2011-07-12 16:52 1239摘自:http://media.ccidnet.c ... -
delphi exe程序以及DLL程序如何在模块内部获得各自的路径
2011-07-11 16:38 1305delphi Exe程序以及DLL程序如何在模块内部获得各自的 ... -
Delphi文本文件读写
2011-07-11 14:55 1244Delphi文本文件读写 (2008-10-31 1 ... -
Delphi自定义的消息的使用
2011-05-31 14:12 2315阅:已验证,可通过; 摘自:http://blog.1 ... -
怎么查看OutputDebugString输出的信息?debugview
2011-05-25 16:02 3835网上很多说用debugview查看,我自己写了一个程序,里面用 ... -
Delphi里查看该变量的内存值
2011-05-25 13:32 1122Delphi里查看该变量的内存值:Run==>Evalu ... -
注册表操作 写入autorun启动项,键值为本程序的全路径
2011-05-20 15:40 1825procedure TForm4.Button2Click ... -
报说包frx7和frxdb7都包含了某个单元的错误
2011-05-11 09:59 10221. 问题描述:在安装FastReport3的时候,安装到- ... -
Delphi中使用ListView和TreeView的Item中的Data可能被忽略的内存泄漏
2011-05-03 14:34 1462摘自:http://blog.csdn.net/g ... -
WM_USER的说明 用户消息ID
2011-04-28 10:46 1687WM_USER 摘自:http://baike.bai ... -
ToolButton不能改变大小
2011-04-28 10:38 3462问题描述:ToolButton不能改变大小? 问 ... -
Delphi里TOOLBAR 上的button的caption为什么显示不出来啊
2011-04-20 17:55 1767Delphi里TOOLBAR 上的button的caption ... -
delphi指针简单入门
2011-04-11 21:42 1156摘自:http://topic.csdn.net/t/2003 ... -
Delphi中paramstr的用法 应用程序间传递数据
2011-04-01 14:33 2104Delphi中paramstr的用法 应用程序间传递数据 ... -
Delphi中的THashedStringList对象 --大数据量时
2011-04-01 13:54 5148Delphi中的THashedStringLi ... -
inherited Create(AOwner); 和直接写inherited有区别吗
2011-03-26 15:44 1324摘自:http://zhidao.baidu.com/que ...
相关推荐
在编程和数据库操作中,"将截断字符串或二进制数据,语句已终止" 是一个常见的错误提示,这通常发生在尝试存储过长的数据到字段时,该字段的长度不足以容纳这些数据。这个错误主要涉及到数据库管理和编程语言的交互,...
地图数据存放在sqlserver 2008中,使用mapxtreme7 开发时,使用Feature.Update()方法时出错的提示包含“MSSQL 将截断字符串或二进制数据” 主要原因就是给某个字段赋值时,内容大于字段的长度或类型不符造成的 解决...
sql server 表中字段二进制截取查找,快速定位不合规字段
在SQL Server数据库中,二进制数据类型(如varbinary)和字符数据类型(如varchar)之间的转换是非常常见的操作,特别是在处理数据导入导出、格式转换或者解析特殊格式的二进制数据时。本文主要讨论如何在SQL Server...
因此,在查询时往往需要将二进制数据转换为可读性更好的形式,如十六进制字符串或者Base64编码。 #### 三、示例代码分析 提供的SQL脚本示例通过一系列操作实现了查询二进制字段内容的目的: ```sql declare @val ...
查找SQL报截断字符串的字段
expression 字符串、二进制字符串、文本、图像、列或包含列的表达式。请勿使用包含聚合函数的表达式。 start 整数或可以隐式转换为 int 的表达式,指定子字符串的开始位置。 length 整数或可以隐式转换为 int 的...
将二进制转换为十六进制字符串。例如: ```sql SELECT RAW_TO_HEX(X'ff') FROM dual; ``` 输出结果为“ff”。 #### 45. ROWID_TO_CHAR 将ROWID类型转换为字符类型。例如: ```sql SELECT ROWID, ROWIDTOCHAR(ROWID)...
在SQL Server中,处理数值类型的数据时,特别是浮点数(float)或定点数(decimal, numeric),我们可能会遇到一个问题:当数值末尾有过多的零时,它们并不总是直观地显示出来。尤其是在进行计算或者存储后,这些零...
- **字符串长度**: `LENGTH`函数在Oracle中用于计算字符串长度,在SQL Server中使用`LEN`或`DATALENGTH`函数。 - **最大/最小字符串**: Oracle中的`GREATEST`和`LEAST`函数用于找出一组字符串中的最大值和最小值,而...
3. TO_CHAR、TO_DATE:用于转换日期时间格式,将日期时间转换为字符串或相反。 4. CURRENT_DATE/TODAY:获取当前日期。 5. MDY:月/日/年格式的日期构造函数。 6. DATETIME:将日期和时间结合起来的表达式。 7. ...
在计算机科学中,16进制常用于表示二进制数据,因为每个16进制数字可以精确地表示四位二进制数,使得长串二进制数字更易于阅读和处理。16进制转换工具就是用来帮助我们把十进制、二进制或者其他进制的数据转换成16...
- **BINARY_CHECKSUM()**:返回行中二进制数据的校验和。 - **TEXTIMAGE()**:返回文本或图像类型的值。 通过以上介绍可以看出,SQL Server内置函数覆盖了数据库操作的各个方面,熟练掌握这些函数能够帮助开发者更...
3. **处理边界问题**:在转换过程中可能会遇到字节集长度不是8的倍数的情况,这时需要考虑如何填充或截断二进制字符串以保持数据的一致性。 4. **错误处理**:在实现转换功能时,还需要考虑到可能出现的错误情况,...
3. CONCAT函数:将两个字符串拼接起来,如果第一个字符串为NULL,则返回第二个字符串;如果第二个字符串为NULL,则返回第一个字符串。 4. INITCAP函数:将字符串中的每个单词的首字母转换为大写,其余字母转换为小写...
- **解释**:SQL Server 中的可变长度二进制类型 `VARBINARY` 映射为 JDBC 同样类型的 `VARBINARY`。 - **注意事项**:这种类型用于存储可变长度的二进制数据,在映射过程中需要注意数据长度的变化。 - **VARCHAR...
- `TO_BINARY_DOUBLE()`和`TO_BINARY_FLOAT()`:将字符串转换为二进制浮点数。 5. **逻辑函数**: - `AND`,`OR`,`NOT`:基本的布尔逻辑运算符。 - `NVL()`:如果表达式为空则返回指定的默认值。 - `DECODE()`...
根据提供的文件信息,我们可以归纳出以下关于Oracle操作的...以上知识点涵盖了Oracle操作的基本方面,包括连接、管理、数据类型、字符串及数值处理等功能。这些知识对于Oracle数据库的日常维护和开发工作都至关重要。
当尝试插入违反这些约束的数据时,系统会报错,例如“截断字符串或二进制数据”,这体现了数据库系统在数据层面实施的完整性检查。 2. **存储过程**: - **创建存储过程**:存储过程是一组预先定义并编译好的SQL...