public static string GenerateOracleScriptToDebug(string queryString, IEnumerable <DataBaseParameter> parameters, char paramIdentifier = '@') { AbstractionOptions options = DefaultDialectOptions.GetDefaultOptions(DatabaseDialect.Oracle, false); options.QueryParameterIdentifier = paramIdentifier; QueryPreProccess preProccess = new QueryPreProccess(options); parameters = preProccess.PreProcessParameters(queryString, parameters); string newQuery = preProccess.PreProcessQuery(queryString); foreach (char c in "\n\t\r") { newQuery = newQuery.Replace(c, ' '); } newQuery = new Regex(" +").Replace(newQuery, " "); string output = $" DECLARE \n sql_query VARCHAR2({newQuery.Length + 2}) := '{newQuery}';\n"; List <string> parametersNames = new List <string>(); foreach (DataBaseParameter parameter in parameters) { if (parameter.Value is DateTime) { DateTime dt = (DateTime)parameter.Value; output += $" {parameter.ParameterName} DATE := TO_DATE('{dt:yyyy-MM-dd HH:mm:ss}', 'YYYY-MM-DD HH24:MI:SS');\n"; } else { output += $" {parameter.ParameterName} VARCHAR2({parameter.Value.ToString().Length}) := '{parameter.Value}';\n"; } parametersNames.Add(parameter.ParameterName); } output += $"BEGIN\n EXECUTE IMMEDIATE sql_query USING {string.Join(",", parametersNames.ToArray())};\n END;\n /"; return(output); }
public DbQueryBase(IDbConnection connection, DatabaseDialect dialect) : this(new ConnectionBuilder(connection), DefaultDialectOptions.GetDefaultOptions(dialect, false)) { }
public DbQueryBase(ConnectionBuilder connectionBuilder, DatabaseDialect dialect) : this(connectionBuilder, DefaultDialectOptions.GetDefaultOptions(dialect, true)) { }
public DbQueryBase(IDbConnection connection, string engine = null) : this(new ConnectionBuilder(connection), DefaultDialectOptions.GetDefaultOptions(engine, false)) { }
public DbQueryBase(ConnectionBuilder connectionBuilder, string engine = null) : this(connectionBuilder, DefaultDialectOptions.GetDefaultOptions(engine, true)) { }