コード例 #1
0
        public static ScriptDetail GetScriptDetail(string script)
        {
            var reader = new StringReader(script);
            var parser = new TSql110Parser(true);

            IList <ParseError> errors;
            var sqlFragment = parser.Parse(reader, out errors);

            var inName = false;
            var name   = "";

            var result = new ScriptDetail();

            foreach (var a in sqlFragment.ScriptTokenStream)
            {
                switch (a.TokenType)
                {
                case TSqlTokenType.Procedure:
                case TSqlTokenType.Schema:
                    result.Type = a.TokenType;
                    break;

                case TSqlTokenType.AsciiStringOrQuotedIdentifier:
                case TSqlTokenType.QuotedIdentifier:
                case TSqlTokenType.Identifier:
                case TSqlTokenType.Dot:
                    inName = true;
                    name  += a.Text;


                    break;

                case TSqlTokenType.EndOfFile:
                case TSqlTokenType.WhiteSpace:
                    if (inName)
                    {
                        result.Name = name;
                        return(result);
                    }
                    break;
                }
            }

            if (result.Name == null)
            {
                throw new Exception(string.Format("could not get name from script. parsing error count: {0}, detail: {1}", errors.Count, get_errors(errors)));
            }

            return(new ScriptDetail());
        }
コード例 #2
0
        public static ScriptDetail GetScriptDetail(string script)
        {
            var reader = new StringReader(script);
            var parser = new TSql110Parser(true);

            IList<ParseError> errors;
            var sqlFragment = parser.Parse(reader, out errors);

            var inName = false;
            var name = "";

            var result = new ScriptDetail();

            foreach (var a in sqlFragment.ScriptTokenStream)
            {

                switch (a.TokenType)
                {
                    case TSqlTokenType.Procedure:
                    case TSqlTokenType.Schema:
                        result.Type = a.TokenType;
                        break;
                    case TSqlTokenType.AsciiStringOrQuotedIdentifier:
                    case TSqlTokenType.QuotedIdentifier:
                    case TSqlTokenType.Identifier:
                    case TSqlTokenType.Dot:
                        inName = true;
                        name += a.Text;

                        break;
                    case TSqlTokenType.EndOfFile:
                    case TSqlTokenType.WhiteSpace:
                        if (inName)
                        {
                            result.Name = name;
                            return result;
                        }
                        break;
                }
            }

            if (result.Name == null)
            {
                throw new Exception(string.Format("could not get name from script. parsing error count: {0}, detail: {1}", errors.Count, get_errors(errors)));
            }

            return new ScriptDetail();
        }