001package gudusoft.gsqlparser.stmt.mssql;
002/*
003 * Date: 14-9-17
004 */
005
006import gudusoft.gsqlparser.EDbVendor;
007import gudusoft.gsqlparser.ESqlStatementType;
008import gudusoft.gsqlparser.TCustomSqlStatement;
009import gudusoft.gsqlparser.nodes.TDummy;
010import gudusoft.gsqlparser.nodes.TExpression;
011import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
012import gudusoft.gsqlparser.nodes.mssql.TSetRowCountSqlNode;
013
014
015/**
016 * sql server set rowcount statement
017 * <p> SET ROWCOUNT { number | @number_var }
018 */
019public class TMssqlSetRowCount extends TCustomSqlStatement {
020
021    private TExpression numberExpr;
022
023    /**
024     * SET ROWCOUNT { number | @number_var }
025     * @return number or @number_var
026     */
027    public TExpression getNumberExpr() {
028        return numberExpr;
029    }
030
031    public TMssqlSetRowCount(EDbVendor dbvendor) {
032        super(dbvendor);
033        sqlstatementtype = ESqlStatementType.sstmssqlsetrowcount;
034    }
035
036    public int doParseStatement(TCustomSqlStatement psql) {
037        if (rootNode == null) return -1;
038        super.doParseStatement(psql);
039        numberExpr = ((TSetRowCountSqlNode)rootNode).getRowNumber();
040
041        return 0;
042    }
043
044    public void accept(TParseTreeVisitor v){
045        v.preVisit(this);
046        v.postVisit(this);
047    }
048
049    public void acceptChildren(TParseTreeVisitor v){
050        v.preVisit(this);
051        numberExpr.accept(v);
052        v.postVisit(this);
053    }
054
055    public void setNumberExpr(TExpression numberExpr) {
056        this.numberExpr = numberExpr;
057    }
058}