001package gudusoft.gsqlparser.stmt.mssql;
002
003import gudusoft.gsqlparser.*;
004import gudusoft.gsqlparser.compiler.TFrame;
005import gudusoft.gsqlparser.nodes.TBlockSqlNode;
006import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
007import gudusoft.gsqlparser.stmt.TBlockSqlStatement;
008
009public class TMssqlBlock extends TBlockSqlStatement {
010     public TMssqlBlock (EDbVendor dbvendor){
011        super(dbvendor);
012        sqlstatementtype = ESqlStatementType.sstmssqlblock ;
013        }
014
015    void buildsql() {
016    }
017
018    void clear() {
019    }
020
021    String getasprettytext() {
022        return "";
023    }
024
025    void iterate(TVisitorAbs pvisitor) {
026    }
027
028    public int doParseStatement(TCustomSqlStatement psql) {
029        if (rootNode == null) return -1;
030        TBlockSqlNode blockSqlNode = (TBlockSqlNode)rootNode;
031
032        super.doParseStatement(psql);
033        TFrame currentFrame = new TFrame(this.stmtScope);
034        currentFrame.pushMeToStack(getFrameStack());
035
036        if (blockSqlNode.getStmts() != null){
037            // sql server has empty block like this: BEGIN END
038            blockSqlNode.getStmts().doParse(this,ESqlClause.unknown);
039
040            for(int i=0;i<blockSqlNode.getStmts().size();i++){
041               this.getBodyStatements().add(blockSqlNode.getStmts().getStatementSqlNode(i).getStmt());
042            }
043        }
044
045        currentFrame.popMeFromStack(getFrameStack());
046
047        return 0;
048    }
049
050    public void accept(TParseTreeVisitor v){
051        v.preVisit(this);
052
053        v.postVisit(this);
054    }
055
056    public void acceptChildren(TParseTreeVisitor v){
057        v.preVisit(this);
058        if (getBodyStatements().size() > 0) getBodyStatements().acceptChildren(v);
059        v.postVisit(this);
060    }
061
062}