コード例 #1
0
        /// <summary>
        /// Parse the given SQL and return a list of issues.
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static IEnumerable <VerificationResults.Issue> Parse(string sql)
        {
            using (var reader = new System.IO.StringReader(sql))
            {
                var scriptFragment = (new ScriptDom.TSql100Parser(true)).Parse(reader, out IList <ScriptDom.ParseError> errors);

                var topFrame = new Symbols.StackFrame();
                var visitor  = new SqlVisitor(
                    topFrame,
                    new Logger.DebuggingLogger()
                    );

                visitor.VisitAndReturnResults(scriptFragment);

                var functionBodyTypeIssues = topFrame.GetIssuesFromCompilingFunctionBodies().ToArray();
                topFrame.PerformTopLevelTypeCheckOfStoredProcedures();
                return(functionBodyTypeIssues.Concat(visitor.Issues));
            }
        }