Oracle OCI22053: 溢出错误

OCI-22053: 溢出错误

原来sql语句如下:

 1 select avg(str.result_value),
 2        avg(str.result_value) + stddev(str.result_value) sd1,
 3        avg(str.result_value) + stddev(str.result_value) * 2 sd2,
 4        avg(str.result_value) - stddev(str.result_value) sd3,
 5        avg(str.result_value) - stddev(str.result_value) * 2 sd4
 6   from PDS_STUDY_PULL psp
 7   join pds_study ps
 8     on trim(ps.identity) = trim(psp.header)
 9   join SAMP_TEST_RESULT str
10     on trim(str.id_numeric) = trim(psp.created_sample_id)

解决办法:

Oracle 数值数据类型最多可存储 38 个字节的精度。当将 Oracle 数值转换为公共语言运行库数据类型时,小数点后边的位数可能过多,这会导致此错误。

使用round函数

round(字段,精度)

修改成如下sql

修改后sql
 1 select round(avg(str.result_value), 2) avg,
 2        round(avg(str.result_value) + stddev(str.result_value), 2) sd1,
 3        round(avg(str.result_value) + stddev(str.result_value) * 2, 2) sd2,
 4        round(avg(str.result_value) - stddev(str.result_value), 2) sd3,
 5        round(avg(str.result_value) - stddev(str.result_value) * 2, 2) sd4
 6   from PDS_STUDY_PULL psp
 7   join pds_study ps
 8     on trim(ps.identity) = trim(psp.header)
 9   join SAMP_TEST_RESULT str
10     on trim(str.id_numeric) = trim(psp.created_sample_id)
原文地址:https://www.cnblogs.com/hfliyi/p/2826964.html