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 update ステートメントを実行するときはいつでも、最後のステートメントの後に 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 に答える