programing

pl/sql 쿼리를 실행할 때 오버플로 오류를 가져오는 중

procenter 2023. 7. 29. 13:22
반응형

pl/sql 쿼리를 실행할 때 오버플로 오류를 가져오는 중

C# 코드를 사용하여 [저장 프로시저를 통해] pl/sql 쿼리를 실행하면 다음 오류가 발생합니다.동일한 문제를 해결하려면 어떻게 해야 합니까?조언 부탁드립니다.참고: 코드에서 공급자 SpecificTypes에 대해 false를 전달하고 있습니다.

 Error Message:
 System.Data.OracleClient.OracleException: OCI-22053: overflow error   
 at System.Data.Common.DbDataAdapter.FillErrorHandler(Exception e, DataTable dataTable, Object[] dataValues)    
 at System.Data.Common.DbDataAdapter.FillLoadDataRowChunk(SchemaMapping mapping, Int32 startRecord, Int32 maxRecords)    
 at System.Data.Common.DbDataAdapter.FillFromReader(Object data, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)    
 at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
 at System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)    
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command,

코드는 다음과 같습니다.

DataSet ds = new DataSet(); 
        try 
        { 
            this.OpenDBConnection(); 
            this.dbAdapter.ReturnProviderSpecificTypes = providerSpecificTypes; 
            this.dbAdapter.Fill(ds); 
        } 
        catch 
        { 
            throw; 
        } 
        finally 
        { 
            CloseDBConnection(); 
            this.cmd.Parameters.Clear(); 
        }
            return ds;

쿼리:

SELECT client_id, TO_CHAR (business_dt, 'MM/DD/YYYY') AS business_dt 
       , mkt_type
       , mkt_name
       , product_name
       , period
       , TO_CHAR (start_dt, 'MM/DD/YYYY') AS start_dt
       , TO_CHAR (end_dt, 'MM/DD/YYYY') AS end_dt
       , duration
       , term
       , NULL AS strike_price
       , instrument_type
       , final_price
       , NULL AS product_price
       , units
       ,  NULL AS expiry_dt
       , mkt_close
       , cons_flag

선택한 열 값 중 하나가 을(를) 초과하는 정밀도를 가지고 있습니다.넷의 십진수 유형입니다.이 문제를 해결하는 가장 좋은 방법은 열 값을 관리 가능한 미리 보기 크기로 반올림하는 것입니다.보통 저는 그것보다 더 이상 필요하지 않을 것이기 때문에 소수점 두 자리로 반올림합니다, 당신은 당신의 필요에 따라 선택하는 것이 좋을 것입니다.

즉, 정밀도가 높은 모든 열을 필요한 소수점 이하의 수로 반올림하도록 쿼리를 변경합니다.

예:

Select ROUND(final_price, 2) From <your table>

문제를 해결해야 합니다.

언급URL : https://stackoverflow.com/questions/7688645/getting-overflow-error-when-executing-pl-sql-query

반응형