001package gudusoft.gsqlparser.stmt.teradata; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.ESqlClause; 005import gudusoft.gsqlparser.ESqlStatementType; 006import gudusoft.gsqlparser.TCustomSqlStatement; 007import gudusoft.gsqlparser.nodes.TCreateProcedureSqlNode; 008import gudusoft.gsqlparser.nodes.TObjectName; 009import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 010import gudusoft.gsqlparser.nodes.TSymbolTableItem; 011import gudusoft.gsqlparser.stmt.TStoredProcedureSqlStatement; 012 013/** 014 * Teradata create procedure. 015 * 016 * @deprecated As of v2.0.7.7, replaced by {@link gudusoft.gsqlparser.stmt.TCreateProcedureStmt} 017 * 018 */ 019public class TTeradataCreateProcedure extends TStoredProcedureSqlStatement { 020 021 public TTeradataCreateProcedure(EDbVendor dbvendor) { 022 super(dbvendor); 023 sqlstatementtype = ESqlStatementType.sstteradatacreateprocedure; 024 } 025 026 /** 027 * The name that you give to the procedure that you are declaring or defining. 028 * @return 029 */ 030 public TObjectName getProcedureName() { 031 return procedureName; 032 } 033 034 private TObjectName procedureName = null; 035 036 037 public int doParseStatement(TCustomSqlStatement psql) { 038 if (rootNode == null) return -1; 039 if(!(rootNode instanceof TCreateProcedureSqlNode)) return -1; 040 TCreateProcedureSqlNode createProcedureNode = (TCreateProcedureSqlNode)rootNode; 041 042 super.doParseStatement(psql); 043 044 procedureName = createProcedureNode.getProcedureName(); 045 this.setParameterDeclarations(createProcedureNode.getParameters()); 046 047 // push parameterDeclarations into symbolTable 048 if (this.getParameterDeclarations() != null){ 049 for(int i=0;i< this.getParameterDeclarations().size();i++){ 050 this.getTopStatement().getSymbolTable().push( new TSymbolTableItem(TObjectName.ttobjParameter,this, this.getParameterDeclarations().getParameterDeclarationItem(i))); 051 } 052 } 053 054 if (createProcedureNode.getStmts() != null){ 055 createProcedureNode.getStmts().doParse(this, ESqlClause.unknown); 056 for(int i=0;i<createProcedureNode.getStmts().size();i++){ 057 this.getBodyStatements().add(createProcedureNode.getStmts().getStatementSqlNode(i).getStmt()); 058 } 059 } 060 061 // pop parameterDeclarations from symbolTable 062 if (this.getParameterDeclarations() != null){ 063 for(int i=0;i< this.getParameterDeclarations().size();i++){ 064 this.getTopStatement().getSymbolTable().pop(); 065 } 066 } 067 068 return 0; 069 } 070 071// public void accept(TParseTreeVisitor v){ 072// v.preVisit(this); 073// v.postVisit(this); 074// } 075// 076// public void acceptChildren(TParseTreeVisitor v){ 077// v.preVisit(this); 078// if (getParameterDeclarations() != null) getParameterDeclarations().acceptChildren(v); 079// if (getBodyStatements().size() > 0) getBodyStatements().acceptChildren(v); 080// v.postVisit(this); 081// } 082 083 public void setProcedureName(TObjectName procedureName) { 084 this.procedureName = procedureName; 085 } 086}