0

我正在尝试更新 oracle 中的表。但是更新不起作用,并且没有抛出异常。请帮忙。提前致谢。

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();
4

2 回答 2

0

是的,当您执行 Oracle 更新语句时,您需要在最后一条语句之后使用 Commit 语句。使用 C# ExecuteNonQuery() 从 OLEDB 调用更新存储过程时触发自动提交

于 2013-10-22T10:12:22.920 回答
0

实际上问题出在 Parameters.Add() 上。应该根据 Update 语句中出现的情况添加参数。实际顺序应该是:

cmd.Parameters.Add(ParamFREQUENCY_CDE);
cmd.Parameters.Add(ParamRING_SIZE);
cmd.Parameters.Add(ParamSSN);                    
cmd.Parameters.Add(ParamDOSIMETER_TYPE);      
于 2013-10-22T19:08:17.360 回答