使用Oracle的Oracle.DataAccess.dll的时候,在OracleCommand的commandtext加了一个参数,原以为参数是根据名字自动匹配的,后来发现默认是按顺序的。
如果需要按照参数名称对应传值 ,加上command.BindByName = true
INSERT INTO TEST VALUES (:ID1, :CALLNUM1, :CHANNEL1)
OracleParameter parameter_ID = new OracleParameter("ID", OracleDbType.Int32); parameter_ID.Direction = ParameterDirection.Input; parameter_ID.Value = ID; command.Parameters.Add(parameter_ID); OracleParameter parameter_CALLNUM = new OracleParameter("CALLNUM", OracleDbType.Varchar2); parameter_CALLNUM.Direction = ParameterDirection.Input; parameter_CALLNUM.Value = CALLNUM; command.Parameters.Add(parameter_CALLNUM); OracleParameter parameter_CALLNUM = new OracleParameter("CALLNUM", OracleDbType.Varchar2); parameter_CALLNUM.Direction = ParameterDirection.Input; parameter_CALLNUM.Value = CALLNUM; command.Parameters.Add(parameter_CALLNUM);
以上传递值并不会报错,在使用ODP传参数时默认是按参数顺序传值的。
如果需要按照参数名称对应传值 ,加上command.BindByName = true;其实这2种做法效果是一样的,只是后者可能更直观一点。