可能是你定义的变量的长度小于值的长度造成的。
你使用的是不是中文字符集,如果是,就可能是有中文汉字时长度超出。
比如:变量的长度为10,如果你保存汉字,就只能保存5个汉字。但5个汉字的字符串用LENGTH得到的值为5,所以你用LENGTH判断长度是没有用的。如果要准确的判断字符串的长度,需要用:LENGTHB来判断。
select length('中国人民共和国') from dual; ==> 7
如果将字符串'中国人民共和国'保存到长度为10的变量中,肯定不行。