/// <summary> /// Scripts the fragment to a string /// </summary> /// <param name="fragment"></param> /// <returns></returns> public static string GetScript(this TSqlFragment fragment) { var generator = new Sql140ScriptGenerator(); generator.GenerateScript(fragment, out string sql); return(sql); }
async void _build_syntax_btn_Click(object sender, RoutedEventArgs e) { var syntax_txt = _query_tb.Text; var bg_default = _analysis_tb.Background; _analysis_tb.Background = Brushes.Gold; var analysis_txt = await Task.Factory.StartNew(() => { var parser = new TSql140Parser(false); IList <ParseError> errors; var fragment = parser.Parse(new StringReader(syntax_txt), out errors); if (errors.Count > 0) { return("ERROR:\n" + String.Join("\n", errors.Select(err => err.Message))); } fragment.Accept(new MyNaiveMutator()); var renderer = new Sql140ScriptGenerator(); string sql; renderer.GenerateScript(fragment, out sql); return(sql); }); this.Dispatcher.Invoke(() => { _analysis_tb.Text = analysis_txt; _analysis_tb.Background = bg_default; }); }
private static string GenerateScript(TSqlFragment fragment, Action <SqlScriptGenerator> configuration) { SqlScriptGenerator generator = new Sql140ScriptGenerator(); configuration?.Invoke(generator); generator.GenerateScript(fragment, out string output); return(output); }
private static SqlScriptGenerator GetGenerator(GenerationOptions options) { SqlScriptGenerator generator = null; switch (options.SqlVersion) { case SqlVersion.Sql80: generator = new Sql80ScriptGenerator(); break; case SqlVersion.Sql100: generator = new Sql100ScriptGenerator(); break; case SqlVersion.Sql110: generator = new Sql110ScriptGenerator(); break; case SqlVersion.Sql120: generator = new Sql120ScriptGenerator(); break; case SqlVersion.Sql130: generator = new Sql130ScriptGenerator(); break; case SqlVersion.Sql140: generator = new Sql140ScriptGenerator(); break; case SqlVersion.Sql150: generator = new Sql150ScriptGenerator(); break; default: generator = new Sql90ScriptGenerator(); break; } generator.Options.Apply(options); return(generator); }
private static void EnsureScriptDom() { string check_definition = "([ismultiple]=(1))"; string sql_statement = "SELECT colx = IIF((" + check_definition + "), 1, 0)"; TSqlParser parser = new TSql140Parser(true); using (var reader = new StringReader(sql_statement)) { TSqlFragment fragment = parser.Parse(reader, out IList <ParseError> errors); if (errors.Any()) { throw new InvalidOperationException($@"Error parsing SQL statement {String.Join(Environment.NewLine, errors.Select(x => $"{x.Message} at {x.Line},{x.Column}"))}"); } //Console.WriteLine("SQL Fragment generated!"); SqlScriptGenerator generator = new Sql140ScriptGenerator(); generator.GenerateScript(fragment, out string output_sql); //Console.WriteLine(output_sql); //Console.WriteLine("SQL Parser prepared."); } }
/// <summary> /// Scripts the fragment to a text writer /// </summary> /// <param name="fragment"></param> /// <param name="writer"></param> public static void GetScript(this TSqlFragment fragment, TextWriter writer) { var generator = new Sql140ScriptGenerator(); generator.GenerateScript(fragment, writer); }