Inheritance: ISqlCompiler
コード例 #1
0
        protected SqlCompileResult Compile(string sql)
        {
            var compiler = new PlSqlCompiler();

            return(compiler.Compile(new SqlCompileContext(sql)));
        }
コード例 #2
0
ファイル: SqlCompileTestBase.cs プロジェクト: deveel/deveeldb
 protected SqlCompileResult Compile(string sql)
 {
     var compiler=new PlSqlCompiler();
     return compiler.Compile(new SqlCompileContext(sql));
 }
コード例 #3
0
ファイル: SqlStatement.cs プロジェクト: deveel/deveeldb
        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);
            }
        }