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}