protected SqlCompileResult Compile(string sql) { var compiler = new PlSqlCompiler(); return(compiler.Compile(new SqlCompileContext(sql))); }
protected SqlCompileResult Compile(string sql) { var compiler=new PlSqlCompiler(); return compiler.Compile(new SqlCompileContext(sql)); }
public static IEnumerable<SqlStatement> Parse(IContext context, SqlQuery query) { if (query == null) throw new ArgumentNullException("query"); ISqlCompiler compiler = null; if (context != null) { compiler = context.ResolveService<ISqlCompiler>(); } if (compiler == null) compiler = new PlSqlCompiler(); try { var compileContext = new SqlCompileContext(context, query.Text); var result = compiler.Compile(compileContext); if (result.HasErrors) { var messages = new StringBuilder(); messages.AppendFormat("SqlParseException for '{0}'" + Environment.NewLine, query.Text); foreach (var m in result.Messages) { messages.AppendFormat("Level: {0}", m.Level); if (null != m.Location) { messages.AppendFormat(", Line: {0}, Column: {1}", m.Location.Line, m.Location.Column); } messages.AppendFormat(", Message: {0}", m.Text); messages.AppendLine(); } throw new FormatException(messages.ToString()); } var statements = result.Statements; foreach (var statement in statements) { if (statement != null) statement.SetSource(query); } return statements; } catch (Exception ex) { var messages = new StringBuilder(); messages.AppendFormat ("The input string '{0}'" + Environment.NewLine, query.Text); messages.AppendFormat (" cannot be parsed into SQL Statements, because of {0}" + Environment.NewLine, ex.ToString()); throw new FormatException(messages.ToString(), ex); } }