From 458d53bce98e97058edd80888adecde5ff9dad44 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 23 May 2023 19:34:18 +0800 Subject: [PATCH] Update oracle --- .../Realization/Oracle/OracleProvider.cs | 91 +++++++++++-------- 1 file changed, 55 insertions(+), 36 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs b/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs index a2a4a4375..6eddfbe44 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs @@ -13,42 +13,42 @@ namespace SqlSugar { public OracleProvider() { - this.FormatSql = sql => - { - sql = sql.Replace("+@", "+:"); - if (sql.HasValue()&&sql.Contains("@")) { - var exceptionalCaseInfo = Regex.Matches(sql, @"\'[^\=]*?\@.*?\'|[\.,\w]+\@[\.,\w]+ | [\.,\w]+\@[\.,\w]+|[\.,\w]+\@[\.,\w]+ |\d+\@\d|\@\@|\w{1,25}\.""\w{1,25}""\@\w{1,25}"); - if (exceptionalCaseInfo != null) { - foreach (var item in exceptionalCaseInfo.Cast()) - { - if (item.Value != null && item.Value.IndexOf(",") == 1&&Regex.IsMatch(item.Value, @"^ \,\@\w+$")) - { - continue; - } - else if (item.Value != null &&Regex.IsMatch(item.Value.Trim(), @"^\w+\,\@\w+\,$")) - { - continue; - } - else if (item.Value != null && item.Value.ObjToString().Contains("||") && Regex.IsMatch(item.Value.Replace(" ","").Trim(), @"\|\|@\w+\|\|")) - { - continue; - } - else if (item.Value != null&& Regex.IsMatch(item.Value.Replace(" ", "").Trim(), @"\(\@\w+\,")) - { - continue; - } - else if (item.Value != null &&item.Value.Contains("=")&& Regex.IsMatch(item.Value, @"\w+ \@\w+[ ]{0,1}\=[ ]{0,1}\'")) - { - continue; - } - sql = sql.Replace(item.Value, item.Value.Replace("@", UtilConstants.ReplaceKey)); - } - } - sql = sql .Replace("@",":"); - sql = sql.Replace(UtilConstants.ReplaceKey, "@"); - } - return sql; - }; + //this.FormatSql = sql => + //{ + // sql = sql.Replace("+@", "+:"); + // if (sql.HasValue()&&sql.Contains("@")) { + // var exceptionalCaseInfo = Regex.Matches(sql, @"\'[^\=]*?\@.*?\'|[\.,\w]+\@[\.,\w]+ | [\.,\w]+\@[\.,\w]+|[\.,\w]+\@[\.,\w]+ |\d+\@\d|\@\@|\w{1,25}\.""\w{1,25}""\@\w{1,25}"); + // if (exceptionalCaseInfo != null) { + // foreach (var item in exceptionalCaseInfo.Cast()) + // { + // if (item.Value != null && item.Value.IndexOf(",") == 1&&Regex.IsMatch(item.Value, @"^ \,\@\w+$")) + // { + // continue; + // } + // else if (item.Value != null &&Regex.IsMatch(item.Value.Trim(), @"^\w+\,\@\w+\,$")) + // { + // continue; + // } + // else if (item.Value != null && item.Value.ObjToString().Contains("||") && Regex.IsMatch(item.Value.Replace(" ","").Trim(), @"\|\|@\w+\|\|")) + // { + // continue; + // } + // else if (item.Value != null&& Regex.IsMatch(item.Value.Replace(" ", "").Trim(), @"\(\@\w+\,")) + // { + // continue; + // } + // else if (item.Value != null &&item.Value.Contains("=")&& Regex.IsMatch(item.Value, @"\w+ \@\w+[ ]{0,1}\=[ ]{0,1}\'")) + // { + // continue; + // } + // sql = sql.Replace(item.Value, item.Value.Replace("@", UtilConstants.ReplaceKey)); + // } + // } + // sql = sql .Replace("@",":"); + // sql = sql.Replace(UtilConstants.ReplaceKey, "@"); + // } + // return sql; + //}; } public override string SqlParameterKeyWord { @@ -124,6 +124,7 @@ namespace SqlSugar private static string[] KeyWord = new string[] { "@order", ":order", "@user", "@level", ":user", ":level", ":type", "@type" }; private static string ReplaceKeyWordParameterName(string sql, SugarParameter[] parameters) { + sql = ReplaceKeyWordWithAd(sql, parameters); if (parameters.HasValue()) { foreach (var Parameter in parameters) @@ -146,6 +147,24 @@ namespace SqlSugar return sql; } + + private static string ReplaceKeyWordWithAd(string sql, SugarParameter[] parameters) + { + if (parameters != null && sql != null&&sql.Contains("@")) + { + foreach (var item in parameters.OrderByDescending(it => it.ParameterName.Length)) + { + if (item.ParameterName.StartsWith("@")) + { + item.ParameterName = ":"+item.ParameterName.TrimStart('@'); + } + sql = Regex.Replace(sql,"@" + item.ParameterName.TrimStart(':'),item.ParameterName,RegexOptions.IgnoreCase); + } + } + + return sql; + } + public override Action ErrorEvent => it => { if (base.ErrorEvent != null)