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}