示例#1
0
        public ISqlNode ParseExecute(ITokenizer t)
        {
            // ("EXEC"|"EXECUTE") ( <stringExpression> | <objectIdentifier> <ListOfArgument> )
            // TODO: @return_status = ...
            // TODO: WITH <execute_option>
            var execToken = t.Expect(SqlTokenType.Keyword, "EXEC", "EXECUTE");
            var execNode  = new SqlExecuteNode()
            {
                Location = execToken.Location,
            };

            if (t.Peek().IsType(SqlTokenType.Identifier))
            {
                execNode.Name      = ParseObjectIdentifier(t);
                execNode.Arguments = ParseList(t, ParseExecArgument);
                return(execNode);
            }

            bool isParenthesis    = t.Peek().IsSymbol("(");
            var  stringExpression = ParseScalarTerm(t);

            if (isParenthesis)
            {
                stringExpression = new SqlParenthesisNode <ISqlNode>(stringExpression);
            }
            execNode.Name = stringExpression;
            return(execNode);
        }
示例#2
0
        public virtual ISqlNode VisitExecute(SqlExecuteNode n)
        {
            var name = Visit(n.Name);
            var args = Visit(n.Arguments) as SqlListNode <SqlExecuteArgumentNode>;

            return(n.Update(name, args));
        }
示例#3
0
 public ISqlNode VisitExecute(SqlExecuteNode n)
 {
     Append("EXECUTE ", n.Name, " ", n.Arguments);
     return(n);
 }