001package gudusoft.gsqlparser.stmt; 002 003 004import gudusoft.gsqlparser.EDbObjectType; 005import gudusoft.gsqlparser.EDbVendor; 006import gudusoft.gsqlparser.ESqlStatementType; 007import gudusoft.gsqlparser.TCustomSqlStatement; 008import gudusoft.gsqlparser.nodes.*; 009 010import java.util.ArrayList; 011 012public class TDropProcedureStmt extends TCustomSqlStatement { 013 public ArrayList<TFunctionHeader> getProcedures() { 014 return procedures; 015 } 016 017 private ArrayList<TFunctionHeader> procedures; 018 public TDropProcedureStmt(EDbVendor dbvendor) { 019 super(dbvendor); 020 sqlstatementtype = ESqlStatementType.sstdropprocedure; 021 } 022 023 private TObjectName procedureName = null; 024 private TObjectNameList procedureNameList = null; 025 026 public TObjectName getProcedureName() { 027 return procedureName; 028 } 029 030 public int doParseStatement(TCustomSqlStatement psql) { 031 if (rootNode == null) return -1; 032 super.doParseStatement(psql); 033 if (rootNode instanceof TDummy){ 034 TDummy node = (TDummy) rootNode; 035 this.procedureName = (TObjectName) node.node1; 036 if (this.procedureName != null){ 037 this.procedureName.setDbObjectType(EDbObjectType.procedure); 038 } 039 040 this.procedureNameList = node.objectNameList; 041 }else if (rootNode instanceof TDropProcedureSqlNode){ 042 TDropProcedureSqlNode sqlNode = (TDropProcedureSqlNode)rootNode; 043 procedureName = sqlNode.getProcedureName(); 044 if (this.procedureName != null){ 045 this.procedureName.setDbObjectType(EDbObjectType.procedure); 046 } 047 048 procedureNameList = sqlNode.getProcedureNameList(); 049 050 // postgresql 051 procedures = sqlNode.getProcedures(); 052 if (procedures != null){ 053 this.procedureName = procedures.get(0).getFunctionName(); 054 this.procedureName.setDbObjectType(EDbObjectType.procedure); 055 } 056 057 this.parameterDeclarations = sqlNode.getParameterDeclarations(); 058 059 } 060 061 if (this.procedureNameList != null){ 062 procedureName = procedureNameList.getObjectName(0); 063 this.procedureName.setDbObjectType(EDbObjectType.procedure); 064 } 065 066 067 return 0; 068 } 069 070 private TParameterDeclarationList parameterDeclarations; 071 072 public TParameterDeclarationList getParameterDeclarations() { 073 return parameterDeclarations; 074 } 075 076 public void accept(TParseTreeVisitor v) { 077 v.preVisit(this); 078 v.postVisit(this); 079 } 080 081 public void acceptChildren(TParseTreeVisitor v) { 082 v.preVisit(this); 083 v.postVisit(this); 084 } 085}