首页 > 其他 > 详细

ORA-01438: 值大于为此列指定的允许精度 问题查找

时间:2020-12-29 14:04:20      阅读:274      评论:0      收藏:0      [点我收藏+]

快速定位语句:

1 SELECT SELECT ‘‘‘||COLUMN_NAME||‘‘‘ AS COL_CODE, COUNT(*) AS COL_CNT FROM ||TABLE_NAME|| WHERE || 
2        CASE WHEN DATA_SCALE = 0 THEN LENGTHB(TO_CHAR(||COLUMN_NAME||)) > ||DATA_PRECISION
3              ELSE (INSTR(TO_CHAR(||COLUMN_NAME||),‘‘.‘‘) > 0 AND LENGTHB(SUBSTR(TO_CHAR(||COLUMN_NAME||),INSTR(TO_CHAR(||COLUMN_NAME||),‘‘.‘‘)+1,LENGTH(TO_CHAR(||COLUMN_NAME||)))) > ||DATA_SCALE||) OR LENGTHB(SUBSTR(TO_CHAR(||COLUMN_NAME||),1,INSTR(TO_CHAR(||COLUMN_NAME||),‘‘.‘‘)-1)) > ||(NVL(DATA_PRECISION,38)-DATA_SCALE) END ||  UNION ALL  AS TSQL 
4          FROM ALL_TAB_COLUMNS T WHERE T.TABLE_NAME = 表名 AND T.OWNER = 用户名 AND DATA_TYPE = NUMBER;

 

查询时删除最后一个UNION ALL; 通过结果可以得知是那个字段精度有问题,再把定位语句对应字段的语句单独列出来,替换SELECT中的内容为表主键及问题列,剔除UNION ALL为";"

,再执行即可得知是问题数据 

ORA-01438: 值大于为此列指定的允许精度 问题查找

原文:https://www.cnblogs.com/yykj/p/14205903.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!