używając TSqlParser

Próbuję przeanalizować SQL przy użyciu TSql100Parser dostarczonego przez microsoft. W tej chwili mam trochę problemów z używaniem go w taki sposób, w jaki wydaje się być przeznaczony. Ponadto brak dokumentacji nie pomaga. (przykład:http://msdn.microsoft.com/en-us/library/microsoft.data.schema.scriptdom.sql.tsql100parser.aspx )

Kiedy uruchamiam prostą instrukcję SELECT przez analizator składni, zwraca kolekcję TSqlStatements, która zawiera instrukcję SELECT. Problem polega na tym, że instrukcja TSqlSelect nie zawiera atrybutów, takich jak klauzula WHERE, mimo że klauzula jest zaimplementowana jako klasa.http://msdn.microsoft.com/en-us/library/microsoft.data.schema.scriptdom.sql.whereclause.aspx Parser rozpoznaje klauzulę WHERE jako taką, patrząc na strumień tokenów. Więc moje pytanie brzmi: czy poprawnie korzystam z parsera? W tej chwili strumień tokenów wydaje się być najbardziej użyteczną funkcją parsera ...

Mój projekt testowy:

public static void Main(string[] args)
{
    var parser = new TSql100Parser(false);

            IList<ParseError> Errors;
            IScriptFragment result = parser.Parse(
                new StringReader("Select col from T1 where 1 = 1 group by 1;" +
                    "select col2 from T2;" +
                    "select col1 from tbl1 where id in (select id from tbl);"),
                    out Errors);

            var Script = result as TSqlScript;

            foreach (var ts in Script.Batches)
            {
                Console.WriteLine("new batch");

                foreach (var st in ts.Statements)
                {
                    IterateStatement(st);
                }
            }
}

static void IterateStatement(TSqlStatement statement)
{
            Console.WriteLine("New Statement");

            if (statement is SelectStatement)
            {
                PrintStatement(sstmnt);
            }
}

questionAnswers(4)

yourAnswerToTheQuestion