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 str10 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 str10 on trim(str.id_numeric) = trim(psp.created_sample_id)