2013-10-22 74 views
0

我想更新oracle中的表。但更新不起作用,並且沒有異常拋出。請幫助。提前致謝。Oracle更新查詢無法使用C#更新

conn.Open(); 
string txtInsert = "Update ORDER_DOSIMETER set FREQUENCY_CDE=:ParamFREQUENCY_CDE, RING_SIZE=:ParamRING_SIZE where SSN=pkg_encrypt_decrypt.funcencrypt(:ParamSSN,'12345678') and DOSIMETER_TYPE= :ParamDOSIMETER_TYPE"; 

       OracleCommand cmd = new OracleCommand(txtInsert, conn); 

       OracleParameter ParamSSN = new OracleParameter("SSN", OracleDbType.Varchar2, ParameterDirection.Input); 

       ParamSSN.Value = SavePersonDetails.SSN; 

       OracleParameter ParamDOSIMETER_TYPE = new OracleParameter("DOSIMETER_TYPE", OracleDbType.Varchar2, ParameterDirection.Input); 
       ParamDOSIMETER_TYPE.Value = SavePersonDetails.Type; 

       OracleParameter ParamRING_SIZE = new OracleParameter("RING_SIZE", OracleDbType.Varchar2, ParameterDirection.Input); 
       ParamRING_SIZE.Value = SavePersonDetails.RingSize; 

       OracleParameter ParamFREQUENCY_CDE = new OracleParameter("RING_SIZE", OracleDbType.Varchar2, ParameterDirection.Input); 
       ParamFREQUENCY_CDE.Value = SavePersonDetails.Frequency; 


       cmd.Parameters.Add(ParamSSN);      
       cmd.Parameters.Add(ParamDOSIMETER_TYPE);     
       cmd.Parameters.Add(ParamRING_SIZE); 
       cmd.Parameters.Add(ParamFREQUENCY_CDE); 

       cmd.ExecuteNonQuery(); 
+1

「UPDATE」是否在直接運行時工作,例如從SQL Developer中,用一些值代替綁定變量?你在運行這個'UPDATE'後會發出一個'COMMIT'嗎? –

回答

0

其實這個問題是與Parameters.Add( 參數應在按照那裏發生的加入更新聲明。 實際的順序應該是:

cmd.Parameters.Add(ParamFREQUENCY_CDE); 
cmd.Parameters.Add(ParamRING_SIZE); 
cmd.Parameters.Add(ParamSSN);      
cmd.Parameters.Add(ParamDOSIMETER_TYPE);  
0

是的,您需要在執行Oracle更新語句時使用最後一條語句後的提交語句。 自動提交它發射時,你永遠叫())從OLEDB存儲過程中的更新使用C# 的ExecuteNonQuery