2011-10-07 37 views
13

Khi tôi chạy truy vấn pl/sql [thông qua một thủ tục được lưu trữ] bằng mã C# của tôi, tôi gặp lỗi: Làm cách nào để giải quyết như vậy? Lưu ý: đang chuyển sai cho providerSpecificTypes trong mã.Nhận lỗi tràn khi thực hiện truy vấn pl/sql

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, 

Đây là mã:

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; 

Query:

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 
+1

Vui lòng thêm phần còn lại của truy vấn. Ngoài ra các kiểu dữ liệu của các cột sẽ là tốt đẹp –

+0

Phiên bản cơ sở dữ liệu nào? Và các kiểu dữ liệu là gì? Đảm bảo rằng bạn đang truyền các biến Date hoặc DateTime vào các hàm TO_CHAR của bạn ... – manzwebdesigns

+0

Cơ sở dữ liệu là Oracle 10g.Yes, đang chuyển các biến DateTime thành hàm to_char.Thanks. – user74042

Trả lời

27

Một trong những giá trị cột được lựa chọn là có một độ chính xác vượt loại thập phân của Net. Cách tốt nhất để giải quyết vấn đề này là ROUND giá trị cột của bạn thành kích thước hình ảnh có thể quản lý. Thông thường tôi làm tròn chúng thành 2 chữ số thập phân như tôi không cần nữa, bạn có thể chọn theo nhu cầu của bạn.

Vì vậy, trong ngắn hạn, thay đổi truy vấn của bạn để tất cả các cột với một số chính xác cao hơn để được làm tròn đến số thập phân bạn cần:

Ví dụ:

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

nên giải quyết vấn đề của bạn.

Các vấn đề liên quan