private void Parse(TSql90Parser parser, string inputScript) { IList<ParseError> errors; using (StringReader sr = new StringReader(inputScript)) { fragment = parser.Parse(sr, out errors); } if (errors != null && errors.Count > 0) { StringBuilder sb = new StringBuilder(); foreach (var error in errors) { sb.AppendLine(error.Message); sb.AppendLine("offset " + error.Offset.ToString()); } throw new ArgumentException("InvalidSQLScript", sb.ToString()); } }
private void Parse(TSql90Parser parser, string inputScript) { IList <ParseError> errors; using (StringReader sr = new StringReader(inputScript)) { fragment = parser.Parse(sr, out errors); } if (errors != null && errors.Count > 0) { StringBuilder sb = new StringBuilder(); foreach (var error in errors) { sb.AppendLine(error.Message); sb.AppendLine("offset " + error.Offset.ToString()); } throw new ArgumentException("InvalidSQLScript", sb.ToString()); } }
protected override void ProcessRecord() { using (var reader = new StringReader(Script)) { var parser = new TSql90Parser(false); IList<ParseError> errors; var result = parser.Parse(reader, out errors); if (errors.Count == 0) { var visitor = new ArgumentsVisitor(); result.Accept(visitor); WriteObject(new { ProcedureName = visitor.ProcedureName, Parameters = visitor.Parameters }); } else { foreach (var error in errors) { var errorRecord = new ErrorRecord( new FormatException($"{error.Message} Line:{error.Line}:{error.Column}"), null, ErrorCategory.InvalidArgument, Script ); WriteError(errorRecord); } } } }
protected override void ProcessRecord() { using (var reader = new StringReader(Script)) { var parser = new TSql90Parser(false); IList <ParseError> errors; var result = parser.Parse(reader, out errors); if (errors.Count == 0) { var visitor = new ArgumentsVisitor(); result.Accept(visitor); WriteObject(new { ProcedureName = visitor.ProcedureName, Parameters = visitor.Parameters }); } else { foreach (var error in errors) { var errorRecord = new ErrorRecord( new FormatException($"{error.Message} Line:{error.Line}:{error.Column}"), null, ErrorCategory.InvalidArgument, Script ); WriteError(errorRecord); } } } }
protected override void ProcessRecord() { using (var reader = new StringReader(Script)) { var parser = new TSql90Parser(false); IList <ParseError> errors; var result = parser.Parse(reader, out errors); if (errors.Count == 0) { var visitor = new TableUsageVisitor(); result.Accept(visitor); visitor.InsertStatements .Where(s => s.InsertSpecification.Target is NamedTableReference).ToList() .ForEach(s => { var target = ((NamedTableReference)s.InsertSpecification.Target); var name = AliasVisitor.ResolveAlias(s, target.SchemaObject.BaseIdentifier.Value); WriteObject(new { Table = name, Action = "Insert" }); } ); visitor.UpdateStatements .Where(s => s.UpdateSpecification.Target is NamedTableReference).ToList() .ForEach(s => { var columns = s.UpdateSpecification.SetClauses .OfType <AssignmentSetClause>() .Where(setClause => setClause.Column != null) .Select(setClause => setClause.Column.MultiPartIdentifier.Identifiers.Last().Value); var target = ((NamedTableReference)s.UpdateSpecification.Target); var name = AliasVisitor.ResolveAlias(s, target.SchemaObject.BaseIdentifier.Value); WriteObject(new { Table = name, Action = "Update", Columns = columns }); } ); visitor.DeleteStatements .Where(s => s.DeleteSpecification.Target is NamedTableReference).ToList() .ForEach(s => { var target = ((NamedTableReference)s.DeleteSpecification.Target); var name = AliasVisitor.ResolveAlias(s, target.SchemaObject.BaseIdentifier.Value); WriteObject(new { Table = name, Action = "Delete" }); } ); } else { foreach (var error in errors) { var errorRecord = new ErrorRecord( new FormatException($"{error.Message} Line:{error.Line}:{error.Column}"), null, ErrorCategory.InvalidArgument, Script ); WriteError(errorRecord); } } } }
protected override void ProcessRecord() { using (var reader = new StringReader(Script)) { var parser = new TSql90Parser(false); IList<ParseError> errors; var result = parser.Parse(reader, out errors); if (errors.Count == 0) { var visitor = new TableUsageVisitor(); result.Accept(visitor); visitor.InsertStatements .Where(s => s.InsertSpecification.Target is NamedTableReference).ToList() .ForEach(s => { var target = ((NamedTableReference)s.InsertSpecification.Target); var name = AliasVisitor.ResolveAlias(s, target.SchemaObject.BaseIdentifier.Value); WriteObject(new { Table = name, Action = "Insert" }); } ); visitor.UpdateStatements .Where(s => s.UpdateSpecification.Target is NamedTableReference).ToList() .ForEach(s => { var columns = s.UpdateSpecification.SetClauses .OfType<AssignmentSetClause>() .Where(setClause => setClause.Column != null) .Select(setClause => setClause.Column.MultiPartIdentifier.Identifiers.Last().Value); var target = ((NamedTableReference)s.UpdateSpecification.Target); var name = AliasVisitor.ResolveAlias(s, target.SchemaObject.BaseIdentifier.Value); WriteObject(new { Table = name, Action = "Update", Columns = columns }); } ); visitor.DeleteStatements .Where(s => s.DeleteSpecification.Target is NamedTableReference).ToList() .ForEach(s => { var target = ((NamedTableReference)s.DeleteSpecification.Target); var name = AliasVisitor.ResolveAlias(s, target.SchemaObject.BaseIdentifier.Value); WriteObject(new { Table = name, Action = "Delete" }); } ); } else { foreach (var error in errors) { var errorRecord = new ErrorRecord( new FormatException($"{error.Message} Line:{error.Line}:{error.Column}"), null, ErrorCategory.InvalidArgument, Script ); WriteError(errorRecord); } } } }