diff --git a/Src/Asp.Net/OracleTest/Demos/1_Query.cs b/Src/Asp.Net/OracleTest/Demos/1_Query.cs index d849a2b88..0d962662a 100644 --- a/Src/Asp.Net/OracleTest/Demos/1_Query.cs +++ b/Src/Asp.Net/OracleTest/Demos/1_Query.cs @@ -26,6 +26,13 @@ namespace OrmTest.Demo //StoredProcedure(); Enum(); Simple(); + SqlTest(); + } + + private static void SqlTest() + { + var db = GetInstance(); + var x = db.Ado.ExecuteCommand("select '@id' as id from student where id=@id",new { id=1}); } private static void Simple() diff --git a/Src/Asp.Net/SqlServerTest/Demos/2_Update.cs b/Src/Asp.Net/SqlServerTest/Demos/2_Update.cs index 13a5bc9d5..ed22b9b90 100644 --- a/Src/Asp.Net/SqlServerTest/Demos/2_Update.cs +++ b/Src/Asp.Net/SqlServerTest/Demos/2_Update.cs @@ -64,7 +64,7 @@ namespace OrmTest.Demo t12.Wait(); //update one columns - var count = db.Updateable().UpdateColumns(it => it.SchoolId == 1).Where(it => it.Id == 1).ExecuteCommand(); + var count = db.Updateable().UpdateColumns(it => it.SchoolId == it.SchoolId+1).Where(it => it.Id == it.Id+1).ExecuteCommand(); diff --git a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs index b1978041b..409acd5b1 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs @@ -55,6 +55,7 @@ namespace SqlSugar public virtual Action LogEventStarting { get; set; } public virtual Action LogEventCompleted { get; set; } public virtual Func> ProcessingEventStartingSQL { get; set; } + protected virtual Func FormatSql { get; set; } public virtual Action ErrorEvent { get; set; } public virtual List SlaveConnections { get; set; } public virtual IDbConnection MasterConnection { get; set; } @@ -254,6 +255,8 @@ namespace SqlSugar { try { + if (FormatSql != null) + sql = FormatSql(sql); SetConnectionStart(sql); if (this.ProcessingEventStartingSQL != null) ExecuteProcessingSQL(ref sql, parameters); @@ -281,6 +284,8 @@ namespace SqlSugar { try { + if (FormatSql != null) + sql = FormatSql(sql); SetConnectionStart(sql); var isSp = this.CommandType == CommandType.StoredProcedure; if (this.ProcessingEventStartingSQL != null) @@ -307,6 +312,8 @@ namespace SqlSugar { try { + if (FormatSql != null) + sql = FormatSql(sql); SetConnectionStart(sql); if (this.ProcessingEventStartingSQL != null) ExecuteProcessingSQL(ref sql, parameters); @@ -337,6 +344,8 @@ namespace SqlSugar { try { + if (FormatSql != null) + sql = FormatSql(sql); SetConnectionStart(sql); if (this.ProcessingEventStartingSQL != null) ExecuteProcessingSQL(ref sql, parameters); diff --git a/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs b/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs index e22a97946..180c6ab98 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs @@ -5,12 +5,30 @@ using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; namespace SqlSugar { public class OracleProvider : AdoProvider { - public OracleProvider() { } + public OracleProvider() + { + this.FormatSql = sql => + { + if (sql.HasValue()&&sql.Contains("@")) { + var exceptionalCaseInfo = Regex.Matches(sql,@"\'.*?\@.*?\'"); + if (exceptionalCaseInfo != null) { + foreach (var item in exceptionalCaseInfo.Cast()) + { + sql = sql.Replace(item.Value, item.Value.Replace("@", UtilConstants.ReplaceKey)); + } + } + sql = sql .Replace("@",":"); + sql = sql.Replace(UtilConstants.ReplaceKey, "@"); + } + return sql; + }; + } public override string SqlParameterKeyWord { get