最近公司的项目从SqlServer传到oracle平台,底层的数据访问SQL需要改过,如:
在SqlServer下:
public void UpdateEhrInfo(EhrInfo model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("update ehr_info set ");
strSql.Append("master_doctor=:master_doctor ,ehr_create_user=:ehr_create_user,modify_date=sysdate ");
strSql.Append(" where ehr_id=:ehr_id");
OracleParameter[] parms =
{
DbHelper.MakeInParam(":ehr_create_user", OracleDbType.Varchar2,20, model.EhrCreateUser), //顺序不一样
DbHelper.MakeInParam(":master_doctor", OracleDbType.Varchar2,20, model.MasterDoctor),
DbHelper.MakeInParam(":ehr_id", OracleDbType.Long, 0, model.EhrId),
DbHelper.MakeInParam("@ehr_create_date", OracleDbType.Varchar2,20, model.EhrCreateDate) //多余的参数
};
DbHelper.ExecuteNonQuery(DataSource.EHR,CommandType.Text, strSql.ToString(), parms);
}
在oracle下跑以上的方法是会报错的,原因是:1.参数的顺序不一样 2.有多余的参数
对于参数顺序不一样,可以在实例化oracleCommand的时候,指定BindByName属性为true;
对于多余的参数目前只能删掉,很纳闷SqlServerCommand可以允许多余的参数存在,Oracle.DataAccess.dll提供的应该也可以啊!!还是坐等各位大牛解惑吧