2013-01-04 33 views
0

我正在使用Visual Studio 2010,Oracle數據庫10g和庫System.Data.OracleClient。我的問題是當我想要執行Batabase中的過程時,我得到一個溢出錯誤。我正在閱讀,並說我需要ROUND或TRUNCT號碼,因爲太大了。但我沒有訪問數據庫來更改過程。我從OracleParameter獲得的值是Out Direction。你有什麼想法可以解決這個問題嗎?OracleClient和C#4.0溢出錯誤

objCommand.Connection = objConnection; 
objCommand.CommandText = "Procedure_name"; 
objCommand.CommandType = CommandType.StoredProcedure; 
objCommand.Parameters.AddRange(parameters); //parameters is a OracleParameter array. I fill it previously. 

objConnection.Open(); 
objCommand.ExecuteNonQuery(); //Here throw the exception 

PS:該過程在PL/SQL中完美工作,並且最大編號爲。數字是「1.66529411764706」;

PS2:同樣,我沒有更改過程的權限。我需要在Visual Studio中修復這個錯誤。

PS3:錯誤是OCI-22053:溢出錯誤。這就是我從錯誤:(

謝謝!

parameters[0] = CreateParameter(PC_COD_CU, OracleType.VarChar, codCu); 
parameters[1] = CreateParameter(PC_COD_EM, OracleType.VarChar, codEm); 
parameters[2] = CreateParameter(PN_SACIC, OracleType.Number, ParameterDirection.Output); 
parameters[3] = CreateParameter(PN_SAVSF, OracleType.Number, ParameterDirection.Output); 
parameters[4] = CreateParameter(PN_MTO_B, OracleType.Number, ParameterDirection.Output); 
parameters[5] = CreateParameter(PN_ULT_REM, OracleType.Number, ParameterDirection.Output); 
parameters[6] = CreateParameter(PN_AVG_REM, OracleType.Number, ParameterDirection.Output); 
parameters[7] = CreateParameter(PN_TO_SEG, OracleType.Number, ParameterDirection.Output); 
parameters[8] = CreateParameter(PN_TA_APL, OracleType.Number, ParameterDirection.Output); 
parameters[9] = CreateParameter(PN_TA_D, OracleType.Number, ParameterDirection.Output); 
parameters[10] = CreateParameter(PN_DEV_ULT, OracleType.Number, ParameterDirection.Output); 
parameters[11] = CreateParameter(PC_TO_F_OBL, OracleType.VarChar, ParameterDirection.Output); 
parameters[12] = CreateParameter(PC_TO_F_VCF, OracleType.VarChar, ParameterDirection.Output); 
parameters[13] = CreateParameter(PC_TO_F_VSF, OracleType.VarChar, ParameterDirection.Output); 
parameters[14] = CreateParameter(PN_RA_MIN_VIG, OracleType.Number, ParameterDirection.Output); 
parameters[15] = CreateParameter(PC_PE_MIN_SPP, OracleType.VarChar, ParameterDirection.Output); 
parameters[16] = CreateParameter(PC_IND_CON_RES, OracleType.VarChar, ParameterDirection.Output); 
parameters[17] = CreateParameter(PC_NUM_RES, OracleType.VarChar, ParameterDirection.Output); 
parameters[18] = CreateParameter(PN_VA_NO_RES, OracleType.Number, ParameterDirection.Output); 
parameters[19] = CreateParameter(PC_ME, OracleType.VarChar, ParameterDirection.Output); 
parameters[20] = CreateParameter(PN_GA_SEP, OracleType.Number, ParameterDirection.Output); 
parameters[21] = CreateParameter(PC_TO_TRA, OracleType.VarChar, ParameterDirection.Output); 
parameters[22] = CreateParameter(PC_TO_BO, OracleType.VarChar, ParameterDirection.Output); 
parameters[23] = CreateParameter(PN_PSEG_NO_D_MIN, OracleType.Number, ParameterDirection.Output); 
parameters[24] = CreateParameter(PN_PSEG_NO_D_AVG, OracleType.Number, ParameterDirection.Output); 
parameters[25] = CreateParameter(PN_PSEG_AJU_S_MIN, OracleType.Number, ParameterDirection.Output); 
parameters[26] = CreateParameter(PN_PSEG_AJU_S_AVG, OracleType.Number, ParameterDirection.Output); 
parameters[27] = CreateParameter(PN_PSEG_AJU_D_MIN, OracleType.Number, ParameterDirection.Output); 
parameters[28] = CreateParameter(PN_PSEG_AJU_D_AVG, OracleType.Number, ParameterDirection.Output); 
parameters[29] = CreateParameter(PN_PAJU_AU_S, OracleType.Number, ParameterDirection.Output); 
parameters[30] = CreateParameter(PN_PAJU_AU_D, OracleType.Number, ParameterDirection.Output); 
parameters[31] = CreateParameter(PN_PRP, OracleType.Number, ParameterDirection.Output); 
parameters[32] = CreateParameter(PN_PJAN, OracleType.Number, ParameterDirection.Output); 
parameters[33] = CreateParameter(PN_MON_TO_CAM, OracleType.Number, ParameterDirection.Output); 
parameters[34] = CreateParameter(RETURN_VALUE, OracleType.Number, ParameterDirection.ReturnValue); 

所有參數名都是字符串預先設定的。

+0

您可以添加一段設置參數的代碼嗎? –

+0

什麼是」溢出錯誤「?堆棧溢出,算術運算溢出?提供關於異常的完整信息,包括堆棧跟蹤和內部異常。 –

回答

0

如果你能確定哪個輸出參數有問題,你可以試試這個有而不是直接從ADO.net調用SP,而是執行包含調用SP的匿名PL/SQL塊的SQL語句,並使用修改out參數(trunc,round或cast)的函數。示例查詢:

「BEGIN PROCEDURE_NAME(?,?,?,TRU NC,)(?)?; END;「