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);
            }
示例#5
0
        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("");
        }