001package gudusoft.gsqlparser.stmt; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 005import gudusoft.gsqlparser.stmt.TBlockSqlStatement; 006import gudusoft.gsqlparser.stmt.TSelectSqlStatement; 007import gudusoft.gsqlparser.nodes.TForSqlNode; 008import gudusoft.gsqlparser.nodes.TObjectName; 009 010public class TForStmt extends TBlockSqlStatement { 011 public TForStmt(EDbVendor dbvendor){ 012 super(dbvendor); 013 sqlstatementtype = ESqlStatementType.sstForStmt ; 014 } 015 016 void buildsql() { 017 } 018 019 void clear() { 020 } 021 022 String getasprettytext() { 023 return ""; 024 } 025 026 void iterate(TVisitorAbs pvisitor) { 027 } 028 029 public TObjectName getCursorName() { 030 return cursorName; 031 } 032 033 public TObjectName getLoopName() { 034 return loopName; 035 } 036 037 public TSelectSqlStatement getSubquery() { 038 return subquery; 039 } 040 041 public int doParseStatement(TCustomSqlStatement psql) { 042 if (rootNode == null) return -1; 043 super.doParseStatement(psql); 044 045 TForSqlNode forSqlNode = (TForSqlNode)rootNode; 046 this.loopName = forSqlNode.getLoopName(); 047 this.cursorName = forSqlNode.getCursorName(); 048 if (forSqlNode.getSelectNode() != null){ 049 this.subquery = new TSelectSqlStatement(EDbVendor.dbvdb2); 050 this.subquery.rootNode = forSqlNode.getSelectNode(); 051 this.subquery.doParseStatement(this); 052 } 053 054 if (forSqlNode.getStmtListNode() != null){ 055 forSqlNode.getStmtListNode().doParse(this,ESqlClause.unknown); 056 for(int i=0;i<forSqlNode.getStmtListNode().size();i++){ 057 this.getBodyStatements().add(forSqlNode.getStmtListNode().getStatementSqlNode(i).getStmt()); 058 } 059 } 060 061 return 0; 062} 063 064 private TObjectName loopName = null; 065 private TObjectName cursorName = null; 066 private TSelectSqlStatement subquery = null; 067 068 public void accept(TParseTreeVisitor v){ 069 v.preVisit(this); 070 v.postVisit(this); 071 } 072 073 public void acceptChildren(TParseTreeVisitor v){ 074 v.preVisit(this); 075 if (subquery != null) subquery.accept(v); 076 if (getBodyStatements().size() > 0) getBodyStatements().accept(v); 077 v.postVisit(this); 078 } 079 080 public void setLoopName(TObjectName loopName) { 081 this.loopName = loopName; 082 } 083 084 public void setCursorName(TObjectName cursorName) { 085 this.cursorName = cursorName; 086 } 087 088 public void setSubquery(TSelectSqlStatement subquery) { 089 this.subquery = subquery; 090 } 091}