diff --git a/Src/Asp.NetCore2/SqlSugar.OceanBaseForOracle/OceanBase/OceanBaseForOracleProvider.cs b/Src/Asp.NetCore2/SqlSugar.OceanBaseForOracle/OceanBase/OceanBaseForOracleProvider.cs index 63b45cfae..8b841b51e 100644 --- a/Src/Asp.NetCore2/SqlSugar.OceanBaseForOracle/OceanBase/OceanBaseForOracleProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar.OceanBaseForOracle/OceanBase/OceanBaseForOracleProvider.cs @@ -211,20 +211,11 @@ namespace SqlSugar.OceanBaseForOracle } } orderParameters = parameters.Where(it => sql.Contains(it.ParameterName)) - .OrderBy(it => new List() { - sql.IndexOf(it.ParameterName+")"), - sql.IndexOf(it.ParameterName+" "), - sql.IndexOf(it.ParameterName+"="), - sql.IndexOf(it.ParameterName+"+"), - sql.IndexOf(it.ParameterName+"-"), - sql.IndexOf(it.ParameterName+";"), - sql.IndexOf(it.ParameterName+","), - sql.IndexOf(it.ParameterName+"*"), - sql.IndexOf(it.ParameterName+"/"), - sql.IndexOf(it.ParameterName+"|"), - sql.IndexOf(it.ParameterName+"&"), - sql.EndsWith(it.ParameterName)?sql.IndexOf(it.ParameterName):0 - }.Where(it => it != 0).Max()).ToList(); + .Select(it =>new { p=it,sort= GetSortId(sql, it) }) + .OrderBy(it=>it.sort) + .Where(it=>it.sort!=0) + .Select(it=>it.p) + .ToList(); foreach (var param in parameters.OrderByDescending(it => it.ParameterName.Length)) { sql = sql.Replace(param.ParameterName, "?"); @@ -246,6 +237,26 @@ namespace SqlSugar.OceanBaseForOracle CheckConnection(); return sqlCommand; } + + private static int GetSortId(string sql, SugarParameter it) + { + return new List() { + 0, + sql.IndexOf(it.ParameterName+")"), + sql.IndexOf(it.ParameterName+" "), + sql.IndexOf(it.ParameterName+"="), + sql.IndexOf(it.ParameterName+"+"), + sql.IndexOf(it.ParameterName+"-"), + sql.IndexOf(it.ParameterName+";"), + sql.IndexOf(it.ParameterName+","), + sql.IndexOf(it.ParameterName+"*"), + sql.IndexOf(it.ParameterName+"/"), + sql.IndexOf(it.ParameterName+"|"), + sql.IndexOf(it.ParameterName+"&"), + sql.EndsWith(it.ParameterName)?sql.IndexOf(it.ParameterName):0 + }.Max(); + } + public override void SetCommandToAdapter(IDataAdapter dataAdapter, DbCommand command) { ((OceanBaseForOracleDataAdapter)dataAdapter).SelectCommand = (OdbcCommand)command;