Synchronous code

This commit is contained in:
sunkaixuan 2025-05-07 15:17:24 +08:00
parent e4a514c8d6
commit dab4f29a19
6 changed files with 130 additions and 30 deletions

View File

@ -29,17 +29,16 @@ namespace SqlSugar
{
get
{
return @"SELECT
table_name name,
(select TOP 1 COMMENTS from user_tab_comments where t.table_name=table_name ) as Description
from user_tables t where
table_name!='HELP'
AND table_name NOT LIKE '%$%'
AND table_name NOT LIKE 'LOGMNRC_%'
AND table_name!='LOGMNRP_CTAS_PART_MAP'
AND table_name!='LOGMNR_LOGMNR_BUILDLOG'
AND table_name!='SQLPLUS_PRODUCT_PROFILE'
";
return @"SELECT a.TABLE_NAME AS Name,b.COMMENTS AS Description
FROM USER_TABLES a
LEFT JOIN (SELECT DISTINCT TABLE_NAME,COMMENTS FROM USER_TAB_COMMENTS WHERE COMMENTS IS NOT NULL) b ON a.TABLE_NAME=b.TABLE_NAME
WHERE
a.table_name!='HELP'
AND a.table_name NOT LIKE '%$%'
AND a.table_name NOT LIKE 'LOGMNRC_%'
AND a.table_name!='LOGMNRP_CTAS_PART_MAP'
AND a.table_name!='LOGMNR_LOGMNR_BUILDLOG'
AND a.table_name!='SQLPLUS_PRODUCT_PROFILE'";
}
}
protected override string GetViewInfoListSql
@ -329,6 +328,7 @@ WHERE table_name = '" + tableName + "'");
columnInfo.DataType = "varchar2";
columnInfo.Length = 50;
}
ConvertCreateColumnInfo(columnInfo);
return base.AddColumn(tableName, columnInfo);
}
public override bool CreateIndex(string tableName, string[] columnNames, bool isUnique = false)

View File

@ -192,7 +192,47 @@ namespace SqlSugar
}
public override string DateIsSameByType(MethodCallExpressionModel model)
{
throw new NotSupportedException("Oracle NotSupportedException DateIsSameDay");
var parameter = model.Args[0];
var parameter2 = model.Args[1];
var parameter3 = model.Args[2];
var dateType = parameter3.MemberValue.ObjToString().ToLower();
var date1 = parameter.MemberName;
var date2 = parameter2.MemberName;
if (dateType == "year")
{
return string.Format("(EXTRACT(YEAR FROM {0}) = EXTRACT(YEAR FROM {1}))", date1, date2);
}
else if (dateType == "month")
{
return string.Format("(EXTRACT(YEAR FROM {0}) = EXTRACT(YEAR FROM {1}) AND EXTRACT(MONTH FROM {0}) = EXTRACT(MONTH FROM {1}))", date1, date2);
}
else if (dateType == "day")
{
return string.Format("(TRUNC({0}) = TRUNC({1}))", date1, date2);
}
else if (dateType == "hour")
{
return string.Format("(TRUNC({0}, 'HH24') = TRUNC({1}, 'HH24'))", date1, date2);
}
else if (dateType == "minute")
{
return string.Format("(TRUNC({0}, 'MI') = TRUNC({1}, 'MI'))", date1, date2);
}
else if (dateType == "second")
{
return string.Format("(TRUNC({0}, 'SS') = TRUNC({1}, 'SS'))", date1, date2);
}
else if (dateType == "week" || dateType == "weekday")
{
return string.Format("(TRUNC({0}, 'IW') = TRUNC({1}, 'IW'))", date1, date2);
}
else
{
// 默认按天比较
return string.Format("(TRUNC({0}) = TRUNC({1}))", date1, date2);
}
}
public override string Length(MethodCallExpressionModel model)
{

View File

@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Text;
namespace SqlSugar
{
@ -358,6 +358,7 @@ WHERE table_name = '"+tableName+"'");
columnInfo.DataType = "varchar2";
columnInfo.Length = 50;
}
ConvertCreateColumnInfo(columnInfo);
return base.AddColumn(tableName,columnInfo);
}
public override bool CreateIndex(string tableName, string[] columnNames, bool isUnique=false)
@ -503,6 +504,10 @@ WHERE table_name = '"+tableName+"'");
column.Length = 22;
}
}
if (current.DefaultValue != null)
{
column.DefaultValue = current.DefaultValue.TrimEnd('\'').TrimStart('\'');
}
}
result.Add(column);
}
@ -523,7 +528,8 @@ WHERE table_name = '"+tableName+"'");
t1.char_length,
t1.data_precision,
t1.data_scale,
t1.nullable,
t1.nullable,
t1.data_default as DefaultValue,
t4.index_name,
t4.column_position,
t4.descend
@ -594,7 +600,7 @@ WHERE table_name = '"+tableName+"'");
this.Context.Ado.IsEnableLogEvent = oldIsEnableLog;
return pks;
});
return comments.HasValue() ? comments.First(it => it.DbColumnName.Equals(filedName, StringComparison.CurrentCultureIgnoreCase)).ColumnDescription : "";
return comments.HasValue() ? comments.FirstOrDefault(it => it.DbColumnName.EqualCase(filedName))?.ColumnDescription : "";
}
@ -680,17 +686,17 @@ WHERE table_name = '"+tableName+"'");
}
private static void ConvertCreateColumnInfo(DbColumnInfo x)
{
string[] array = new string[] { "int","date"};
string[] array = new string[] { "int","date"};
if (x.OracleDataType.HasValue())
{
x.DataType = x.OracleDataType;
}
if (array.Contains(x.DataType?.ToLower()))
{
x.Length = 0;
x.DecimalDigits = 0;
}
if (x.OracleDataType.HasValue())
{
x.DataType = x.OracleDataType;
}
if(x.DecimalDigits>0&& x.DataType?.ToLower().IsIn("varchar", "clob", "varchar2", "nvarchar2", "nvarchar")==true)
if(x.DecimalDigits>0&& x.DataType?.ToLower()?.IsIn("varchar", "clob", "varchar2", "nvarchar2", "nvarchar")==true)
{
x.DecimalDigits = 0;
}

View File

@ -3,7 +3,7 @@ using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
@ -87,7 +87,7 @@ namespace SqlSugar
public override void BeginTran(string transactionName)
{
((OracleConnection)this.Connection).BeginTransaction();
}
}
/// <summary>
/// Only SqlServer
/// </summary>
@ -107,7 +107,7 @@ namespace SqlSugar
{
return base.ProcessingEventStartingSQL(sql, parameter);
}
else
else
{
return new KeyValuePair<string, SugarParameter[]>(sql, parameter);
}
@ -142,10 +142,10 @@ namespace SqlSugar
return sqlCommand;
}
private static string[] KeyWord = new string[] { "@month",":month",":day", "@day","@group",":group",":index","@index","@order", ":order", "@user", "@level", ":user", ":level", ":type", "@type",":year","@year","@date",":date" };
private static string ReplaceKeyWordParameterName(string sql, SugarParameter[] parameters)
private string ReplaceKeyWordParameterName(string sql, SugarParameter[] parameters)
{
sql = ReplaceKeyWordWithAd(sql, parameters);
if (parameters.HasValue())
if (parameters.HasValue()&&this.CommandType!=CommandType.StoredProcedure)
{
foreach (var Parameter in parameters.OrderByDescending(x=>x.ParameterName?.Length))
{

View File

@ -322,7 +322,47 @@ namespace SqlSugar
}
public override string DateIsSameByType(MethodCallExpressionModel model)
{
throw new NotSupportedException("Oracle NotSupportedException DateIsSameDay");
var parameter = model.Args[0];
var parameter2 = model.Args[1];
var parameter3 = model.Args[2];
var dateType = parameter3.MemberValue.ObjToString().ToLower();
var date1 = parameter.MemberName;
var date2 = parameter2.MemberName;
if (dateType == "year")
{
return string.Format("(EXTRACT(YEAR FROM {0}) = EXTRACT(YEAR FROM {1}))", date1, date2);
}
else if (dateType == "month")
{
return string.Format("(EXTRACT(YEAR FROM {0}) = EXTRACT(YEAR FROM {1}) AND EXTRACT(MONTH FROM {0}) = EXTRACT(MONTH FROM {1}))", date1, date2);
}
else if (dateType == "day")
{
return string.Format("(TRUNC({0}) = TRUNC({1}))", date1, date2);
}
else if (dateType == "hour")
{
return string.Format("(TRUNC({0}, 'HH24') = TRUNC({1}, 'HH24'))", date1, date2);
}
else if (dateType == "minute")
{
return string.Format("(TRUNC({0}, 'MI') = TRUNC({1}, 'MI'))", date1, date2);
}
else if (dateType == "second")
{
return string.Format("(TRUNC({0}, 'SS') = TRUNC({1}, 'SS'))", date1, date2);
}
else if (dateType == "week" || dateType == "weekday")
{
return string.Format("(TRUNC({0}, 'IW') = TRUNC({1}, 'IW'))", date1, date2);
}
else
{
// 默认按天比较
return string.Format("(TRUNC({0}) = TRUNC({1}))", date1, date2);
}
}
public override string Length(MethodCallExpressionModel model)
{

View File

@ -22,12 +22,20 @@ namespace SqlSugar
var updateTable = string.Format("UPDATE {0} SET", base.GetTableNameStringNoWith);
var setValues = string.Join(",", t.Where(s => !s.IsPrimarykey).Where(s => OldPrimaryKeys == null || !OldPrimaryKeys.Contains(s.DbColumnName)).Select(m => GetOracleUpdateColums(m)).ToArray());
var pkList = t.Where(s => s.IsPrimarykey).ToList();
if (this.IsWhereColumns && this.PrimaryKeys?.Any() == true)
{
var whereColumns = pkList.Where(it => this.PrimaryKeys?.Any(p => p.EqualCase(it.PropertyName) || p.EqualCase(it.DbColumnName)) == true).ToList();
if (whereColumns.Any())
{
pkList = whereColumns;
}
}
List<string> whereList = new List<string>();
foreach (var item in pkList)
{
var isFirst = pkList.First() == item;
var whereString = isFirst ? " " : " AND ";
whereString += GetOracleUpdateColums(item);
whereString += GetOracleUpdateColums(item,true);
whereList.Add(whereString);
}
return string.Format("{0} {1} WHERE {2};", updateTable, setValues, string.Join("",whereList));
@ -36,9 +44,15 @@ namespace SqlSugar
return sb.ToString();
}
private string GetOracleUpdateColums(DbColumnInfo m)
private string GetOracleUpdateColums(DbColumnInfo m,bool isWhere=false)
{
return string.Format("\"{0}\"={1} ", m.DbColumnName.ToUpper(IsUppper), base.GetDbColumn(m,FormatValue(m.Value,m.IsPrimarykey,m.PropertyName)));
var result= string.Format("\"{0}\"={1} ", m.DbColumnName.ToUpper(IsUppper), base.GetDbColumn(m,FormatValue(m.Value,m.IsPrimarykey,m.PropertyName)));
if (isWhere&&m.Value == null)
{
result = result.Replace("=NULL ", " is NULL ");
}
return result;
}
int i = 0;
public object FormatValue(object value,bool isPrimaryKey,string name)