001package gudusoft.gsqlparser.stmt;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.ESqlClause;
005import gudusoft.gsqlparser.ESqlStatementType;
006import gudusoft.gsqlparser.TCustomSqlStatement;
007import gudusoft.gsqlparser.compiler.TFrame;
008import gudusoft.gsqlparser.nodes.TDoExecuteBlockSqlNode;
009import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
010
011public class TDoExecuteBlockStmt extends TRoutine {
012    public TDoExecuteBlockStmt(EDbVendor dbvendor) {
013        super(dbvendor);
014        sqlstatementtype = ESqlStatementType.sstDoExecuteBlock;
015    }
016
017    public int doParseStatement(TCustomSqlStatement psql) {
018        if (rootNode == null) return -1;
019        TDoExecuteBlockSqlNode doStmt = (TDoExecuteBlockSqlNode) rootNode;
020
021        super.doParseStatement(psql);
022        TFrame currentFrame = new TFrame(this.stmtScope);
023        currentFrame.pushMeToStack(getFrameStack());
024
025        doStmt.getBlcok().doParse(this, ESqlClause.unknown);
026        this.blockBody = doStmt.getBlcok();
027
028
029        currentFrame.popMeFromStack(getFrameStack());
030
031        return 0;
032
033    }
034
035    public void accept(TParseTreeVisitor v){
036        v.preVisit(this);
037        v.postVisit(this);
038    }
039
040    public void acceptChildren(TParseTreeVisitor v){
041        v.preVisit(this);
042        if (blockBody != null){
043            blockBody.acceptChildren(v);
044        }
045        v.postVisit(this);
046    }
047
048}