Esempio n. 1
0
        private ISqlNode ParseUnterminatedWithChildStatement(ITokenizer t)
        {
            t.Skip(SqlTokenType.Whitespace);

            var keyword = t.ExpectPeek(SqlTokenType.Keyword);

            if (keyword.Value == "SELECT")
            {
                return(ParseQueryExpression(t));
            }
            if (keyword.Value == "INSERT")
            {
                return(ParseInsertStatement(t));
            }
            if (keyword.Value == "UPDATE")
            {
                return(ParseUpdateStatement(t));
            }
            if (keyword.Value == "DELETE")
            {
                return(ParseDeleteStatement(t));
            }
            if (keyword.Value == "MERGE")
            {
                return(ParseMergeStatement(t));
            }

            return(null);
        }
Esempio n. 2
0
        private ISqlNode ParseUnterminatedStatement(ITokenizer t)
        {
            t.Skip(SqlTokenType.Whitespace);

            var keyword = t.ExpectPeek(SqlTokenType.Keyword);

            if (keyword.Value == "SELECT")
            {
                return(ParseQueryExpression(t));
            }
            if (keyword.Value == "WITH")
            {
                return(ParseWithStatement(t));
            }
            if (keyword.Value == "INSERT")
            {
                return(ParseInsertStatement(t));
            }
            if (keyword.Value == "UPDATE")
            {
                return(ParseUpdateStatement(t));
            }
            if (keyword.Value == "DELETE")
            {
                return(ParseDeleteStatement(t));
            }
            if (keyword.Value == "DECLARE")
            {
                return(ParseDeclare(t));
            }
            if (keyword.Value == "SET")
            {
                return(ParseSet(t));
            }
            if (keyword.Value == "EXEC" || keyword.Value == "EXECUTE")
            {
                return(ParseExecute(t));
            }
            if (keyword.Value == "BEGIN")
            {
                return(ParseBeginEndStatementList(t));
            }
            if (keyword.Value == "IF")
            {
                return(ParseIf(t));
            }
            if (keyword.Value == "MERGE")
            {
                return(ParseMergeStatement(t));
            }

            // TODO: If we don't know what it is, Parse it into an Unknown node and continue
            // TODO: RETURN?
            // TODO: THROW/TRY/CATCH
            // TODO: WHILE/CONTINUE/BREAK
            // TODO: CREATE/DROP/ALTER? Do we want to handle DDL statments here?
            return(null);
        }