出现这种错误一般是在SQL语句执行前就报出的错误。这样的错误一般需要仔细检查SQL语句,以及参数的数据类型。
而在cmd.ExecuteNonQuery()中出现的错误,则很可能就排除了语法类的错误。
public static int ExecuteSql(string strSQL, params OracleParameter[] commandParameters) { try { OpenConnection(); OracleCommand cmd = new OracleCommand(); PrepareCommand(cmd, Connection, null, CommandType.Text, strSQL, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } catch (System.Exception ex) { throw ex; } }
近期遇到这样一个错误:
update HP_GSBM_GR set DATA_BM=:DATA_BM, UDT=:UDT, DETAILS=:DETAILS where TCOS_ID=:TCOS_ID and CURRENT_TYPE =:CURRENT_TYPE
在执行时发生了莫名的错误。后来仔细检查过语法后,发现是参数的在commandParameters中出现的次序的错误问题。
看来,以后写SQL语句,最好能现在PL/SQL中检查后再测试才是正道,否则对于这种参数定义的次序出现也是错误的问题,真的在调试时极难发现。