mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-23 22:11:36 +08:00
Update Oracle Insertable(list)
This commit is contained in:
parent
9da41c1d7e
commit
cbeb4e247d
@ -8,8 +8,8 @@ namespace OrmTest
|
||||
{
|
||||
public class Config
|
||||
{
|
||||
public static string ConnectionString = "Data Source=localhost/orcl;User ID=system;Password=jhl856615011;";
|
||||
public static string ConnectionString2 = "Data Source=localhost/orcl;User ID=system;Password=jhl856615011;";
|
||||
public static string ConnectionString3= "Data Source=localhost/orcl;User ID=system;Password=jhl856615011;";
|
||||
public static string ConnectionString = "Data Source=localhost/orcl;User ID=system;Password=jhl52771;";
|
||||
public static string ConnectionString2 = "Data Source=localhost/orcl;User ID=system;Password=jhl52771;";
|
||||
public static string ConnectionString3= "Data Source=localhost/orcl;User ID=system;Password=jhl52771;";
|
||||
}
|
||||
}
|
||||
|
@ -49,42 +49,47 @@ namespace SqlSugar
|
||||
else
|
||||
{
|
||||
StringBuilder batchInsetrSql = new StringBuilder();
|
||||
int pageSize = 200;
|
||||
int pageIndex = 1;
|
||||
int totalRecord = groupList.Count;
|
||||
int pageCount = (totalRecord + pageSize - 1) / pageSize;
|
||||
batchInsetrSql.AppendLine("INSERT ALL");
|
||||
foreach (var item in groupList)
|
||||
{
|
||||
batchInsetrSql.Append("INTO " + GetTableNameString + " ");
|
||||
string insertColumns = "";
|
||||
|
||||
batchInsetrSql.Append("(");
|
||||
batchInsetrSql.Append(columnsString);
|
||||
if (identities.HasValue())
|
||||
{
|
||||
columnsString = columnsString.TrimEnd(',') + "," + string.Join(",", identities.Select(it => Builder.GetTranslationColumnName(it.DbColumnName)));
|
||||
batchInsetrSql.Append("," + string.Join(",", identities.Select(it => Builder.GetTranslationColumnName(it.DbColumnName))));
|
||||
}
|
||||
while (pageCount >= pageIndex)
|
||||
{
|
||||
batchInsetrSql.AppendFormat(SqlTemplateBatch, GetTableNameString, columnsString);
|
||||
int i = 0;
|
||||
foreach (var columns in groupList.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList())
|
||||
{
|
||||
var isFirst = i == 0;
|
||||
if (!isFirst)
|
||||
{
|
||||
batchInsetrSql.Append(SqlTemplateBatchUnion);
|
||||
}
|
||||
var insertColumns = string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value), Builder.GetTranslationColumnName(it.DbColumnName))));
|
||||
batchInsetrSql.Append(") VALUES");
|
||||
|
||||
|
||||
batchInsetrSql.Append("(");
|
||||
insertColumns = string.Join(",", item.Select(it =>FormatValue(it.Value)));
|
||||
batchInsetrSql.Append(insertColumns);
|
||||
if (identities.HasValue())
|
||||
{
|
||||
insertColumns = insertColumns.TrimEnd(',') + "," + string.Join(",", identities.Select(it =>
|
||||
batchInsetrSql.Append(",");
|
||||
foreach (var idn in identities)
|
||||
{
|
||||
var seqValue = this.OracleSeqInfoList[it.OracleSequenceName];
|
||||
this.OracleSeqInfoList[it.OracleSequenceName] = this.OracleSeqInfoList[it.OracleSequenceName] + 1;
|
||||
return seqValue + 1+" AS "+it.DbColumnName;
|
||||
}));
|
||||
var seqvalue = this.OracleSeqInfoList[idn.OracleSequenceName];
|
||||
this.OracleSeqInfoList[idn.OracleSequenceName] = this.OracleSeqInfoList[idn.OracleSequenceName] + 1;
|
||||
if (identities.Last() == idn)
|
||||
{
|
||||
batchInsetrSql.Append(seqvalue + 1 );
|
||||
}
|
||||
batchInsetrSql.Append("\r\n SELECT " + insertColumns + " FROM DUAL ");
|
||||
++i;
|
||||
else
|
||||
{
|
||||
batchInsetrSql.Append(seqvalue + 1 + ",");
|
||||
}
|
||||
pageIndex++;
|
||||
batchInsetrSql.Append("\r\n;\r\n");
|
||||
}
|
||||
return "BEGIN\r\n"+ batchInsetrSql.ToString()+"\r\nEND;";
|
||||
}
|
||||
batchInsetrSql.AppendLine(") ");
|
||||
|
||||
}
|
||||
batchInsetrSql.AppendLine("SELECT 1 FROM DUAL");
|
||||
var result= batchInsetrSql.ToString();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
public override object FormatValue(object value)
|
||||
|
Loading…
Reference in New Issue
Block a user