001package gudusoft.gsqlparser.stmt.mysql; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.*; 005import gudusoft.gsqlparser.stmt.TStoredProcedureSqlStatement; 006 007/** 008 * MySQL create procedure. 009 * 010 * @deprecated since GSP Java version 2.3.9.3, use {@link gudusoft.gsqlparser.stmt.TCreateProcedureStmt} instead. 011 * 012 */ 013public class TMySQLCreateProcedure extends TStoredProcedureSqlStatement{ 014 public TMySQLCreateProcedure (EDbVendor dbvendor){ 015 super(dbvendor); 016 sqlstatementtype = ESqlStatementType.sstmysqlcreateprocedure ; 017 } 018 019 void buildsql() { 020 } 021 022 void clear() { 023 } 024 025 String getasprettytext() { 026 return ""; 027 } 028 029 void iterate(TVisitorAbs pvisitor) { 030 } 031 032 public TObjectName getStoredProcedureName(){ 033 return procedureName; 034 } 035 036 /** 037 * The name that you give to the procedure that you are declaring or defining. 038 * @return 039 */ 040 public TObjectName getProcedureName() { 041 return procedureName; 042 } 043 044 private TObjectName procedureName = null; 045 046 047 048 public int doParseStatement(TCustomSqlStatement psql) { 049 if (rootNode == null) return -1; 050 TCreateProcedureSqlNode createProcedureNode = (TCreateProcedureSqlNode)rootNode; 051 052 super.doParseStatement(psql); 053 054 procedureName = createProcedureNode.getProcedureName(); 055 if (getSqlEnv().getDefaultCatalogName() != null){ 056 if (procedureName.getDatabaseToken() == null){ 057 procedureName.setDatabaseToken(new TSourceToken(getSqlEnv().getDefaultCatalogName())); 058 } 059 } 060 this.setParameterDeclarations( createProcedureNode.getParameters()); 061 062 // push parameterDeclarations into symbolTable 063 if (this.getParameterDeclarations() != null){ 064 for(int i=0;i< this.getParameterDeclarations().size();i++){ 065 this.getTopStatement().getSymbolTable().push( new TSymbolTableItem(TObjectName.ttobjParameter,this, this.getParameterDeclarations().getParameterDeclarationItem(i))); 066 } 067 } 068 069 if (createProcedureNode.getStmt() != null){ 070 createProcedureNode.getStmt().doParse(this,ESqlClause.unknown); 071 this.getBodyStatements().add(createProcedureNode.getStmt().getStmt()); 072 } 073 else if((createProcedureNode.getBlcok() != null)&&(createProcedureNode.getBlcok().getStmts() != null)){ 074 createProcedureNode.getBlcok().getStmts().doParse(this,ESqlClause.unknown); 075 076 for(int i=0;i<createProcedureNode.getBlcok().getStmts().size();i++){ 077 this.getBodyStatements().add(createProcedureNode.getBlcok().getStmts().getStatementSqlNode(i).getStmt()); 078 } 079 080 } 081 082 083 // pop parameterDeclarations from symbolTable 084 if (this.getParameterDeclarations() != null){ 085 for(int i=0;i< this.getParameterDeclarations().size();i++){ 086 this.getTopStatement().getSymbolTable().pop(); 087 } 088 } 089 090 return 0; 091 } 092 093 public void accept(TParseTreeVisitor v){ 094 v.preVisit(this); 095 v.postVisit(this); 096 } 097 098 public void acceptChildren(TParseTreeVisitor v){ 099 v.preVisit(this); 100 if (getParameterDeclarations() != null) getParameterDeclarations().acceptChildren(v); 101 getBodyStatements().acceptChildren(v); 102 v.postVisit(this); 103 } 104 105 public void setProcedureName(TObjectName procedureName) { 106 this.procedureName = procedureName; 107 } 108}