public static IList <ProcedureParameter> VisitProcedureParameters(TSqlFragment fragment) { TSqlSelectVisitor visitor = new TSqlSelectVisitor(); fragment.Accept(visitor); return(visitor.ProcedureParameters); }
public static IList <SelectStatement> VisitSelectStatements(TSqlFragment fragment) { TSqlSelectVisitor visitor = new TSqlSelectVisitor(); fragment.Accept(visitor); return(visitor.SelectStatements); }
public static IList <CreateProcedureStatement> VisitCreateProcedureStatements(TSqlFragment fragment) { TSqlSelectVisitor visitor = new TSqlSelectVisitor(); fragment.Accept(visitor); return(visitor.CreateProcedureStatements); }
public static IList <AlterTableAddTableElementStatement> VisitAlterTableAddTableElementStatements(TSqlFragment fragment) { TSqlSelectVisitor visitor = new TSqlSelectVisitor(); fragment.Accept(visitor); return(visitor.AlterTableAddTableElementStatements); }
public static void Main() { var parser = new TSql150Parser(true, SqlEngineType.Standalone); var fragment = parser.Parse(new StringReader("select top 1 [Column1],[Column2],[Column3] from [table] where [id] = 2;"), out IList <ParseError> errors); foreach (var error in errors) { Console.WriteLine($"Line: {error.Line} Column:{error.Column} Number: {error.Number} Message: {error.Message}"); } foreach (var token in fragment.ScriptTokenStream) { Console.WriteLine($"{token.TokenType,20}: `{token.Text}`"); } var items = TSqlSelectVisitor.VisitSelectStatements(fragment); var definedTypes = typeof(Sql100ScriptGenerator).Assembly.DefinedTypes; foreach (var definedType in definedTypes) { var baseType = definedType.BaseType; if (typeof(TableReference).IsAssignableFrom(baseType)) { } } var types = typeof(Sql100ScriptGenerator).Assembly.DefinedTypes.Where( x => x.BaseType.Name == "TableReference"); var props = typeof(ISqlScriptGeneratorOptions).GetProperties().OrderBy(x => x.Name); var sb = new StringBuilder(); foreach (var prop in props) { string type = ""; switch (prop.PropertyType.Name.ToLower()) { case "string": { type = "xs:string"; break; } case "boolean": { type = "xs:boolean"; break; } case "int32": { type = "xs:int"; break; } default: { type = prop.Name; break; } } //sb.AppendLine($"<xs:element name=\"{prop.Name}\" type=\"{type}\" />"); sb.AppendLine($"<xs:element ref=\"{prop.Name}\" minOccurs=\"0\" />"); } Console.Write(sb); Clipboard.SetText(sb.ToString()); Debug.Print(""); }