oracle中,设定varchar2长度为4000,(最大只能存4000),为什么存到1333就不行了,多一个都不行,报 ORA-01480:trailling

vfssqs 2009-07-22 10:38:43
如题,可以确保的是字符串中没有任何的中文.
查看了一些资料都不而得之.
使用ALTER SESSION SET NLS_LANGUAGE=AMERICAN
也没有好好的解决.

有没有高手出来解答一下小弟的问题.
...全文
1401 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xwb123 2009-07-22
  • 打赏
  • 举报
回复
把update语句写成一个sql文件,然后在PLSQL中 start一下试试。
或者用sqldeveloper
vfssqs 2009-07-22
  • 打赏
  • 举报
回复
有什么工具可以及介绍一下.
多壮志 2009-07-22
  • 打赏
  • 举报
回复
工具问题,换个工具就可以了。
vfssqs 2009-07-22
  • 打赏
  • 举报
回复
可是去掉里面的任何一段代码都可以保存的呀.
sun1976 2009-07-22
  • 打赏
  • 举报
回复
你这里面有单引号,你要先做一个变量,把这个串存入变量,用变量来更新
否则,你要注意其中的单引号要转义处理
vfssqs 2009-07-22
  • 打赏
  • 举报
回复
就是想问有没有解决的办法.这个已经保存在数据库中,只是现在需要进行修改.
vfssqs 2009-07-22
  • 打赏
  • 举报
回复
恩就是这个错误出现就是字符串过长.PLSQL会自动的进行截取.截取的时候找不到结束符才出的这种错误
shiyiwan 2009-07-22
  • 打赏
  • 举报
回复
ORA-01480: trailing null missing from STR bind value
Cause: A bind variable of type 5 (null-terminated string) does not contain the terminating null in its buffer.
Action: Terminate the string with a null character
vfssqs 2009-07-22
  • 打赏
  • 举报
回复
去掉中间的任何一个代码都可以进行保存.
vfssqs 2009-07-22
  • 打赏
  • 举报
回复
pkg com.sinocc.pm.ecmman.CPCECNFunc.doupdatecpcdrawingparamsins(<objid>)
pkg com.sinocc.docmanager.CPCDocWFFunc.mergeDocNoSynModel("select distinct olddrawid || '_' ||oldrev targetdocid,newdrawid || '_' || newrev historydocid,2 as mergetype,1 as keeptwfobj,usesourcedocname from cpcecndrawline where olddrawid<>'0' and drawoperation=1 and cpcecndrawline.ecnid in (select ecnid from cpcecn where wfid=<wfid>)")
update cpcecndrawline set newdrawid=docid,newrev=rev,newdrawname=docname from cpcdoc where cpcdoc.docid=cpcecndrawline.olddrawid and cpcecndrawline.ecnid in (select ecnid from cpcecn where wfid=<wfid>) and olddrawid<>newdrawid and olddrawid<>0 and drawoperation=1
pkg com.sinocc.psmanager.intf.CPCPdmIntfWfFunc.drawintf("select b.olddrawid objid,b.oldrev objrev,6 reftype,a.newdrawid refid,a.newrev refrev,1 as act from cpcecndrawline a, cpcecndrawline b where a.ecnid=b.ecnid and a.superitemid=b.drawitemid and a.drawoperation=2 and a.ecnid in (select ecnid from cpcecn where wfid=<wfid>) union select b.olddrawid objid,b.oldrev objrev,6 reftype,a.olddrawid refid,a.oldrev refrev,2 act from cpcecndrawline a,cpcecndrawline b where a.ecnid=b.ecnid and a.superitemid=b.drawitemid and a.drawoperation in (3,8) and a.ecnid in (select ecnid from cpcecn where wfid=<wfid>)")
pkg com.sinocc.pm.ecmman.CPCECNFunc.doupdatedrawid(<objid>)
sun1976 2009-07-22
  • 打赏
  • 举报
回复
FOR UPDATE的语句贴出来看看
目标表有过用了别名把别名去掉试试
如果数据中有特殊符号看看是不是需要转换
vfssqs 2009-07-22
  • 打赏
  • 举报
回复
这个数据库端执行是可以的,只是使用PLSQL用FOR UPDATE的方法就会出错.而且原数据的长度已经为.1500左右.
samuellei 2009-07-22
  • 打赏
  • 举报
回复
你先在数据库端执行插入看看
vfssqs 2009-07-22
  • 打赏
  • 举报
回复
在PLSQL中用FOR UPDATE的方法直接改的.
hebo2005 2009-07-22
  • 打赏
  • 举报
回复
你的前台程序是用什么?是在后台试的嘛
多壮志 2009-07-22
  • 打赏
  • 举报
回复
oracle自己的sql developer实验下,这个问题我自己有遇到过,以前别人也提到过。此类问题多半是因为同居使用OCI方式操作,而OCI操作不慎重,即可能出现这类问题。

3,492

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧