001package gudusoft.gsqlparser.stmt.mssql;
002
003import gudusoft.gsqlparser.*;
004import gudusoft.gsqlparser.stmt.TSelectSqlStatement;
005import gudusoft.gsqlparser.nodes.TReturnSqlNode;
006import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
007import gudusoft.gsqlparser.nodes.TExpression;
008
009public class TMssqlReturn extends TCustomSqlStatement {
010    private TSelectSqlStatement subquery = null;
011    
012     public TMssqlReturn (EDbVendor dbvendor){
013        super(dbvendor);
014        sqlstatementtype = ESqlStatementType.sstmssqlreturn ;
015        }
016
017    void buildsql() {
018    }
019
020    void clear() {
021    }
022
023    String getasprettytext() {
024        return "";
025    }
026
027    void iterate(TVisitorAbs pvisitor) {
028    }
029
030    private TExpression returnExpr = null;
031
032    public int doParseStatement(TCustomSqlStatement psql) {
033        if (rootNode == null) return -1;
034        TReturnSqlNode returnSqlNode = (TReturnSqlNode)rootNode;
035
036        super.doParseStatement(psql);
037        if (returnSqlNode.getExpr() != null){
038            this.returnExpr = returnSqlNode.getExpr();
039            this.returnExpr.doParse(this,ESqlClause.unknown);
040        }
041        if (returnSqlNode.getSelectSqlNode() != null){
042            subquery = new TSelectSqlStatement(this.dbvendor);
043            subquery.rootNode = returnSqlNode.getSelectSqlNode();
044            subquery.doParseStatement(this);
045        }
046        return 0;
047    }
048
049     public TExpression getReturnExpr() {
050        return returnExpr;
051    }
052
053    public TSelectSqlStatement getSubquery() {
054        return subquery;
055    }
056
057    public void accept(TParseTreeVisitor v){
058        v.preVisit(this);
059        v.postVisit(this);
060    }
061
062    public void acceptChildren(TParseTreeVisitor v){
063        v.preVisit(this);
064        if (returnExpr != null) returnExpr.acceptChildren(v);
065        if (subquery != null) subquery.acceptChildren(v);
066        v.postVisit(this);
067    }
068
069    public void setSubquery(TSelectSqlStatement subquery) {
070        this.subquery = subquery;
071    }
072
073    public void setReturnExpr(TExpression returnExpr) {
074        this.returnExpr = returnExpr;
075    }
076}