001package gudusoft.gsqlparser.stmt; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.ESqlStatementType; 005import gudusoft.gsqlparser.TCustomSqlStatement; 006import gudusoft.gsqlparser.nodes.TDummy; 007import gudusoft.gsqlparser.nodes.TObjectName; 008import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 009 010/** 011 * Single declare cursor sql statement for GaussDB 012 */ 013public class TDeclareCursorStmt extends TCustomSqlStatement { 014 015 public TDeclareCursorStmt(EDbVendor dbvendor) { 016 super(dbvendor); 017 sqlstatementtype = ESqlStatementType.sstDeclareCursor; 018 } 019 020 public TObjectName getCursorName() { 021 return cursorName; 022 } 023 024 private TObjectName cursorName; 025 026 public TSelectSqlStatement getSubQuery() { 027 return subQuery; 028 } 029 030 private TSelectSqlStatement subQuery; 031 032 public int doParseStatement(TCustomSqlStatement psql) { 033 if (rootNode == null) return -1; 034 super.doParseStatement(psql); 035 TDummy dummy = (TDummy) rootNode; 036 cursorName = (TObjectName) dummy.node1; 037 subQuery = new TSelectSqlStatement(this.dbvendor); 038 subQuery.rootNode = dummy.node2; 039 subQuery.doParseStatement(this); 040 041 return 0; 042 } 043 public void accept(TParseTreeVisitor v){ 044 v.preVisit(this); 045 v.postVisit(this); 046 } 047 048 public void acceptChildren(TParseTreeVisitor v){ 049 v.preVisit(this); 050 v.postVisit(this); 051 } 052}