001package gudusoft.gsqlparser.stmt;
002
003import gudusoft.gsqlparser.*;
004import gudusoft.gsqlparser.nodes.TObjectName;
005import gudusoft.gsqlparser.nodes.TExpressionList;
006import gudusoft.gsqlparser.nodes.TOpenSqlNode;
007import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
008
009/**
010 * The OPEN statement executes the query associated with a cursor.
011 */
012
013public class TOpenStmt extends TCustomSqlStatement {
014    public TOpenStmt(){
015        this(EDbVendor.dbvoracle);
016    }
017     public TOpenStmt(EDbVendor dbvendor){
018        super(dbvendor);
019        sqlstatementtype = ESqlStatementType.sst_openstmt;
020        }
021
022    void buildsql() {
023    }
024
025    void clear() {
026    }
027
028    String getasprettytext() {
029        return "";
030    }
031
032    void iterate(TVisitorAbs pvisitor) {
033    }
034
035    /**
036     *
037     * @return variables declared as the formal parameter of a cursor.
038     */
039    public TExpressionList getCursorParameterNames() {
040        return cursorParameterNames;
041    }
042
043    private TExpressionList cursorParameterNames = null;
044
045    /**
046     *
047     * @return An explicit cursor previously declared within the current scope and not currently open.
048     */
049    public TObjectName getCursorName() {
050        return cursorName;
051    }
052
053    private TObjectName cursorName = null;
054
055    public int doParseStatement(TCustomSqlStatement psql) {
056        super.doParseStatement(psql);
057        switch (dbvendor){
058            case dbvmysql:
059                if (rootNode == null) return -1;
060                TOpenSqlNode openSqlNode = (TOpenSqlNode)rootNode;
061                this.cursorName = openSqlNode.getCursorName();
062                break;
063            default:
064                break;
065        }
066        return 0;
067    }
068
069    public void init(Object arg1)
070    {
071        cursorName = (TObjectName)arg1;
072      //  this.cursorName.setObjectType(TObjectName.ttobjCursorName);
073        this.cursorName.setDbObjectType(EDbObjectType.cursor);
074    }
075
076    public void init(Object arg1,Object arg2)
077    {
078        init(arg1);
079        cursorParameterNames = (TExpressionList)arg2;
080    }
081
082    public void accept(TParseTreeVisitor v){
083        v.preVisit(this);
084        v.postVisit(this);
085    }
086    public void acceptChildren(TParseTreeVisitor v){
087        v.preVisit(this);
088        v.postVisit(this);
089    }
090
091    public void setCursorParameterNames(TExpressionList cursorParameterNames) {
092        this.cursorParameterNames = cursorParameterNames;
093    }
094
095    public void setCursorName(TObjectName cursorName) {
096        this.cursorName = cursorName;
097    }
098}