今天在A环境一个数据库,触发器在传递一个长度为19位的字符串时,接收长度为36,死活报 属性编号(或索引中的收集元素)违反它的约束条件 后来我把19位改成18位就OK了。可是我另外一个环境B也是19位没问题啊。 第一反应可能是数据库字符集出了问题 一看两边都是UTF8,没啥问题,唯一不同的是其中一个参数 NLS_LENGTH_SEMANTICS A环境 是 BYTE B环境 是 CHAR 于是我也把A环境的改成CHAR 依然不支持19位 奇了怪了。 后来仔细一查,发现传递的字段类型是这样的: A环境 varchar2(20 char) B环境 varchar2(20) 一个char = 2,即传递19个字符时,长度变成了38,自然放不到36里。 把这个类型长度替换成varchar2(20) 问题搞定。
Oracle字段加char与不加char的重要性
猜你喜欢
转载自jdkleo.iteye.com/blog/2215408
今日推荐
周排行