System.Data.OracleClient.OracleException:「ORA-01036:不正な変数名/番号」
2398 ワード
今日C#で書かれたプログラムがOracleデータベースを使用しているとき、次のような例外が発生しました.
例外が発生したコード・セグメントは次のとおりです.
調べてみると、異なるデータベースに接続するには異なるパラメータ式が使用され、異なるデータベースのパラメータ式は次のようになります.
SqlClientパラメータ式:@ParameterName OracleClientパラメータ式::ParameterName OleDB.Netパラメータ式:?
コードの@記号を:記号に変更するだけでいいので、パラメータ式の名前はSQL文と同じであることに注意してください.
変更後は正常に動作します
System.Data.OracleClient.OracleException:“ORA-01036: / ”
例外が発生したコード・セグメントは次のとおりです.
sqlStr = "INSERT INTO serial_number (mo_id,product_id,create_date,first_no,begin_no,modify_date) VALUES(:mo_id,:product_id,sysdate,:first_no,:begin_no,sysdate)";//SQL
conn=new OracleConnection(ConnStr2);// OracleConnection
conn.Open();//
comm=conn.CreateCommand();// OracleCommand
comm.CommandText = sqlStr;//OracleCommand SQL
comm.Parameters.Add(new OracleParameter(":mo_id",moId));//
comm.Parameters.Add(new OracleParameter(":product_id",productId));
comm.Parameters.Add(new OracleParameter(":first_no",code+code2+begin));
comm.Parameters.Add(new OracleParameter(":begin_no",start));
comm.ExecuteNonQuery();//
調べてみると、異なるデータベースに接続するには異なるパラメータ式が使用され、異なるデータベースのパラメータ式は次のようになります.
SqlClientパラメータ式:@ParameterName OracleClientパラメータ式::ParameterName OleDB.Netパラメータ式:?
コードの@記号を:記号に変更するだけでいいので、パラメータ式の名前はSQL文と同じであることに注意してください.
sqlStr = "INSERT INTO serial_number (mo_id,product_id,create_date,first_no,begin_no,modify_date) VALUES(:mo_id,:product_id,sysdate,:first_no,:begin_no,sysdate)";//SQL
conn=new OracleConnection(ConnStr2);// OracleConnection
conn.Open();//
comm=conn.CreateCommand();// OracleCommand
comm.CommandText = sqlStr;//OracleCommand SQL
comm.Parameters.Add(new OracleParameter(":mo_id",moId));//
comm.Parameters.Add(new OracleParameter(":product_id",productId));
comm.Parameters.Add(new OracleParameter(":first_no",code+code2+begin));
comm.Parameters.Add(new OracleParameter(":begin_no",start));
comm.ExecuteNonQuery();//
変更後は正常に動作します