From a97c7cb58cba34c7ec86b5b243ecceea4331c12f Mon Sep 17 00:00:00 2001 From: "guoshun.du" Date: Tue, 15 Aug 2023 16:14:15 +0800 Subject: [PATCH] =?UTF-8?q?*OceanBaseForOracle=EF=BC=8C=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=8C=96Bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OceanBase/OceanBaseForOracleProvider.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSugar.OceanBaseForOracle/OceanBase/OceanBaseForOracleProvider.cs b/Src/Asp.NetCore2/SqlSugar.OceanBaseForOracle/OceanBase/OceanBaseForOracleProvider.cs index 656a2b368..ec38e029f 100644 --- a/Src/Asp.NetCore2/SqlSugar.OceanBaseForOracle/OceanBase/OceanBaseForOracleProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar.OceanBaseForOracle/OceanBase/OceanBaseForOracleProvider.cs @@ -12,6 +12,7 @@ namespace SqlSugar.OceanBaseForOracle { public class OceanBaseForOracleProvider : AdoProvider { + public override string SqlParameterKeyWord { get { return ":"; } } public OceanBaseForOracleProvider() { } public override IDbConnection Connection { @@ -201,12 +202,19 @@ namespace SqlSugar.OceanBaseForOracle List orderParameters = new List(); if (parameters.HasValue()) { + foreach (var p in parameters) + { + if (!p.ParameterName.StartsWith(this.SqlParameterKeyWord)) + { + p.ParameterName = this.SqlParameterKeyWord + p.ParameterName; + } + } //由于Odbc参数都为?,用顺序进行匹配,则进行参数排序 string reg = string.Join('|', parameters.Select(m => m.ParameterName)); //通过正则匹配,为顺序输出,相同也会重复匹配 Regex parametersRegx = new Regex(reg); MatchCollection matches = parametersRegx.Matches(sql); - foreach (Match pMatch in matches) + foreach (Match pMatch in matches) { SugarParameter mP = parameters.FirstOrDefault(m => m.ParameterName == pMatch.Value); if (mP != null) @@ -226,7 +234,7 @@ namespace SqlSugar.OceanBaseForOracle { sqlCommand.Transaction = (OdbcTransaction)this.Transaction; } - if (parameters.HasValue()) + if (orderParameters.HasValue()) { OdbcParameter[] ipars = GetSqlParameter(orderParameters.ToArray()); sqlCommand.Parameters.AddRange(ipars);