oracle 使用for update 报错ORA-01480:trailing null missing from STR bind value

【问题】用PL/SQL更改数据,表中的字段为varchar2(4000),修改表中的一个数据时直接用for update 做数据更改,数据的长度为2000多,但是在提交时报ORA-01480:trailing null missing from STR bind value错误
 
【分析】
 
大概有两种原因,一:pl/sql工具导致的,因为toad没有出现这个问题。二:OCI里面包含的变量长度问题,出现这个错误,说明字符串被中间截断了,不能正确的解析
【解决】
 
 1.用TOAD工具可以直接更改数据,提交时不会出现这个问题,可以直接解决这个问题,只是为了这一个问题单装一个toad工具,尤其是习惯于pl/sql工具的人,可不是一个好的方法。
 
2.不使用for update ,使用insert或者update语句也可以解决这个问题,只是中间有很多引号的问题或者百分号,解决起来很麻烦,可以一个一个的去加转义符,非常的费劲。还有一个小方法,可以解决这个问题,将原始串中的单引号或者百分号用其他符号代替,比如#,$之类的,将数据插入 数据库之后,再运行一个简单的update replace 语句就可以很快解决这个问题。

update replace语句,如:  update qt_subject_config t set t.sqlstr=replace(t.sqlstr,'$','''')   where t.subjectid='4.2.2h18'


欢迎访问本店:http://shop107558950.taobao.com/index.htm
新店开张,0利润销售,只为挣信誉,欢迎大家选购,还可以代充话费!!!

你可能感兴趣的:(oracle 使用for update 报错ORA-01480:trailing null missing from STR bind value)