You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
170 lines
6.8 KiB
170 lines
6.8 KiB
using System;
|
|
|
|
namespace SqlSugar
|
|
{
|
|
public partial class OracleExpressionContext : ExpressionContext, ILambdaExpressions
|
|
{
|
|
public SqlSugarClient Context { get; set; }
|
|
public OracleExpressionContext()
|
|
{
|
|
base.DbMehtods = new OracleMethod();
|
|
}
|
|
public override string SqlParameterKeyWord
|
|
{
|
|
get
|
|
{
|
|
return ":";
|
|
}
|
|
}
|
|
public override string SqlTranslationLeft { get { return "\""; } }
|
|
public override string SqlTranslationRight { get { return "\""; } }
|
|
public override string GetTranslationTableName(string entityName, bool isMapping = true)
|
|
{
|
|
return base.GetTranslationTableName(entityName, isMapping).ToUpper();
|
|
}
|
|
public override string GetTranslationColumnName(string columnName)
|
|
{
|
|
return base.GetTranslationColumnName(columnName).ToUpper();
|
|
}
|
|
public override string GetDbColumnName(string entityName, string propertyName)
|
|
{
|
|
return base.GetDbColumnName(entityName,propertyName).ToUpper();
|
|
}
|
|
}
|
|
public partial class OracleMethod : DefaultDbMethod, IDbMethods
|
|
{
|
|
public override string ToTime(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return string.Format(" to_timestamp({0},'0000-01-01 hh24:mi:ss') ", parameter.MemberName);
|
|
}
|
|
public override string DateValue(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
var type = (DateType)Enum.Parse(typeof(DateType), parameter2.MemberValue.ObjToString(), false);
|
|
switch (type)
|
|
{
|
|
case DateType.Year:
|
|
return string.Format("(CAST(TO_CHAR({0},'yyyy') AS NUMBER)",parameter.MemberName);
|
|
case DateType.Month:
|
|
return string.Format("(CAST(TO_CHAR({0},'mm') AS NUMBER)", parameter.MemberName);
|
|
case DateType.Hour:
|
|
return string.Format("(CAST(TO_CHAR({0},'hh24') AS NUMBER)", parameter.MemberName);
|
|
case DateType.Second:
|
|
return string.Format("(CAST(TO_CHAR({0},'ss') AS NUMBER)", parameter.MemberName);
|
|
case DateType.Minute:
|
|
return string.Format("(CAST(TO_CHAR({0},'mi') AS NUMBER)", parameter.MemberName);
|
|
case DateType.Millisecond:
|
|
return string.Format("(CAST(TO_CHAR({0},'ff3') AS NUMBER)", parameter.MemberName);
|
|
case DateType.Day:
|
|
default:
|
|
return string.Format("(CAST(TO_CHAR({0},'dd') AS NUMBER)", parameter.MemberName);
|
|
}
|
|
}
|
|
public override string DateAddByType(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
var parameter3 = model.Args[2];
|
|
var type = (DateType)Enum.Parse(typeof(DateType), parameter3.MemberValue.ObjToString(), false);
|
|
double time = 1;
|
|
switch (type)
|
|
{
|
|
case DateType.Year:
|
|
time = 1 * 365;
|
|
break;
|
|
case DateType.Month:
|
|
time = 1 *30;
|
|
break;
|
|
case DateType.Day:
|
|
break;
|
|
case DateType.Hour:
|
|
time = 1 / 24.0;
|
|
break;
|
|
case DateType.Second:
|
|
time = 1 / 24.0/60.0/60.0;
|
|
break;
|
|
case DateType.Minute:
|
|
time = 1 / 24.0/60.0;
|
|
break;
|
|
case DateType.Millisecond:
|
|
time = 1 / 24.0 / 60.0 / 60.0/1000;
|
|
break;
|
|
}
|
|
return string.Format("({0}+({1}*{2})) ", parameter.MemberName, time,parameter2.MemberName);
|
|
}
|
|
|
|
public override string DateAddDay(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
return string.Format("({0}+(1*{1})) ", parameter.MemberName, parameter2.MemberName);
|
|
}
|
|
|
|
public override string ToString(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return string.Format(" CAST({0} AS VARCHAR2(4000))", parameter.MemberName);
|
|
}
|
|
|
|
public override string ToDate(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return string.Format(" to_date({0},'yyyy-mm-dd hh24:mi:ss')", parameter.MemberName);
|
|
}
|
|
public override string Contains(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
return string.Format(" ({0} like '%'||{1}||'%') ", parameter.MemberName, parameter2.MemberName);
|
|
}
|
|
public override string StartsWith(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
return string.Format(" ({0} like {1}||'%') ", parameter.MemberName, parameter2.MemberName);
|
|
}
|
|
public override string EndsWith(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
return string.Format(" ({0} like '%'||{1}) ", parameter.MemberName, parameter2.MemberName);
|
|
}
|
|
public override string Trim(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return string.Format(" trim({0}) ", parameter.MemberName);
|
|
}
|
|
public override string DateIsSameDay(MethodCallExpressionModel model)
|
|
{
|
|
throw new NotSupportedException("Oracle NotSupportedException DateIsSameDay");
|
|
}
|
|
public override string DateIsSameByType(MethodCallExpressionModel model)
|
|
{
|
|
throw new NotSupportedException("Oracle NotSupportedException DateIsSameDay");
|
|
}
|
|
public override string Length(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return string.Format(" LENGTH({0}) ", parameter.MemberName);
|
|
}
|
|
|
|
public override string IsNull(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter1 = model.Args[1];
|
|
return string.Format("NVL({0},{1})", parameter.MemberName, parameter1.MemberName);
|
|
}
|
|
|
|
public override string MergeString(params string[] strings)
|
|
{
|
|
return string.Join("||", strings).Replace("+", "");
|
|
}
|
|
|
|
public override string GetDate()
|
|
{
|
|
return "sysdate";
|
|
}
|
|
}
|
|
}
|