mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-04-29 19:56:43 +08:00
Update Oracle
This commit is contained in:
parent
0e18048320
commit
b2addd97c2
@ -140,7 +140,7 @@ namespace SqlSugar
|
||||
{
|
||||
get
|
||||
{
|
||||
return "ORDER BY GETDATE() ";
|
||||
return "ORDER BY "+this.Builder.SqlDateNow+" ";
|
||||
}
|
||||
}
|
||||
public virtual string OrderByTemplate
|
||||
|
@ -16,6 +16,13 @@ namespace SqlSugar
|
||||
return ":";
|
||||
}
|
||||
}
|
||||
public override string SqlDateNow
|
||||
{
|
||||
get
|
||||
{
|
||||
return "sysdate";
|
||||
}
|
||||
}
|
||||
public override string SqlTranslationLeft { get { return "\""; } }
|
||||
public override string SqlTranslationRight { get { return "\""; } }
|
||||
public override string GetTranslationTableName(string name)
|
||||
|
@ -2,18 +2,82 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace SqlSugar
|
||||
{
|
||||
public class OracleQueryBuilder : QueryBuilder
|
||||
{
|
||||
public override bool IsComplexModel(string sql)
|
||||
{
|
||||
return Regex.IsMatch(sql, @"AS ""\w+\.\w+""");
|
||||
}
|
||||
public override string SqlTemplate
|
||||
{
|
||||
get
|
||||
{
|
||||
return "SELECT {0}{{$:OrderByString:$}} FROM {1}{2}{3}{4}";
|
||||
return "SELECT {0}{"+UtilConstants.OrderReplace+"} FROM {1}{2}{3}{4}";
|
||||
}
|
||||
}
|
||||
public override string ToSqlString()
|
||||
{
|
||||
string oldOrderBy = this.OrderByValue;
|
||||
string externalOrderBy = oldOrderBy;
|
||||
AppendFilter();
|
||||
sql = new StringBuilder();
|
||||
if (this.OrderByValue == null && (Skip != null || Take != null)) this.OrderByValue = " ORDER BY "+this.Builder.SqlDateNow+" ";
|
||||
if (this.PartitionByValue.IsValuable())
|
||||
{
|
||||
this.OrderByValue = this.PartitionByValue + this.OrderByValue;
|
||||
}
|
||||
var isRowNumber = Skip != null || Take != null;
|
||||
var rowNumberString = string.Format(",ROW_NUMBER() OVER({0}) AS RowIndex ", GetOrderByString);
|
||||
string groupByValue = GetGroupByString + HavingInfos;
|
||||
string orderByValue = (!isRowNumber && this.OrderByValue.IsValuable()) ? GetOrderByString : null;
|
||||
if (this.IsCount) { orderByValue = null; }
|
||||
sql.AppendFormat(SqlTemplate, GetSelectValue, GetTableNameString, GetWhereValueString, groupByValue, orderByValue);
|
||||
sql.Replace(UtilConstants.OrderReplace, isRowNumber ? (this.IsCount ? null : rowNumberString) : null);
|
||||
if (this.IsCount) { return sql.ToString(); }
|
||||
var result = ToPageSql(sql.ToString(), this.Take, this.Skip);
|
||||
if (ExternalPageIndex > 0)
|
||||
{
|
||||
if (externalOrderBy.IsNullOrEmpty())
|
||||
{
|
||||
externalOrderBy = " ORDER BY "+this.Builder.SqlDateNow+" ";
|
||||
}
|
||||
result = string.Format("SELECT *,ROW_NUMBER() OVER({0}) AS RowIndex2 FROM ({1}) ExternalTable ", GetExternalOrderBy(externalOrderBy), result);
|
||||
result = ToPageSql2(result, ExternalPageIndex, ExternalPageSize, true);
|
||||
}
|
||||
this.OrderByValue = oldOrderBy;
|
||||
return result;
|
||||
}
|
||||
public override string ToPageSql(string sql, int? take, int? skip, bool isExternal = false)
|
||||
{
|
||||
string temp = isExternal ? ExternalPageTempalte : PageTempalte;
|
||||
if (skip != null && take == null)
|
||||
{
|
||||
return string.Format(temp, sql.ToString(), skip.ObjToInt() + 1, long.MaxValue);
|
||||
}
|
||||
else if (skip == null && take != null)
|
||||
{
|
||||
return string.Format(temp, sql.ToString(), 1, take.ObjToInt());
|
||||
}
|
||||
else if (skip != null && take != null)
|
||||
{
|
||||
return string.Format(temp, sql.ToString(), skip.ObjToInt() + 1, skip.ObjToInt() + take.ObjToInt());
|
||||
}
|
||||
else
|
||||
{
|
||||
return sql.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToPageSql2(string sql, int? pageIndex, int? pageSize, bool isExternal = false)
|
||||
{
|
||||
string temp = isExternal ? ExternalPageTempalte : PageTempalte;
|
||||
return string.Format(temp, sql.ToString(), (pageIndex - 1) * pageSize + 1, pageIndex * pageSize);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -6,8 +6,11 @@ namespace SqlSugar
|
||||
{
|
||||
internal static class UtilConstants
|
||||
{
|
||||
internal const string AssemblyName = "SqlSugar";
|
||||
|
||||
internal const string Space = " ";
|
||||
internal const string AssemblyName = "SqlSugar";
|
||||
internal const string OrderReplace = "{$:OrderByString:$}";
|
||||
|
||||
internal static Type StringType = typeof(string);
|
||||
internal static Type ShortType = typeof(short);
|
||||
internal static Type IntType = typeof(int);
|
||||
|
Loading…
Reference in New Issue
Block a user