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}