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}