diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/SqlBuilder/OracleFastBuilder.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/SqlBuilder/OracleFastBuilder.cs index ce273e8da..41aed2828 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/SqlBuilder/OracleFastBuilder.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/SqlBuilder/OracleFastBuilder.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Data; +using System.Linq; using System.Text; using System.Threading.Tasks; @@ -9,6 +10,23 @@ namespace SqlSugar { public class OracleFastBuilder : FastBuilder, IFastBuilder { + public override string UpdateSql { get; set; } = "UPDATE (SELECT A.NAME ANAME,B.NAME BNAME FROM A,B WHERE A.ID=B.ID)SET ANAME = BNAME;"; + public override async Task CreateTempAsync(DataTable dt) + { + dt.TableName = "T" + SnowFlakeSingle.instance.getID().ToString().Substring(4,16); + var sql = this.Context.Queryable().Where(it => false).Select("*").ToSql().Key; + await this.Context.Ado.ExecuteCommandAsync($"create global temporary table {dt.TableName} as {sql} "); + var xxx = this.Context.Queryable().AS(dt.TableName).ToList(); + } + public override async Task UpdateByTempAsync(string tableName, string tempName, string[] updateColumns, string[] whereColumns) + { + Check.ArgumentNullException(!updateColumns.Any(), "update columns count is 0"); + Check.ArgumentNullException(!whereColumns.Any(), "where columns count is 0"); + var sets = string.Join(",", updateColumns.Select(it => $"TM.{it}=TE.{it}")); + var wheres = string.Join(",", whereColumns.Select(it => $"TM.{it}=TE.{it}")); + string sql = string.Format(UpdateSql, sets, tableName, tempName, wheres); + return await this.Context.Ado.ExecuteCommandAsync(sql); + } private OracleBulkCopy GetBulkCopyInstance() {