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 boolean ifExists = false; 024 025 public boolean isIfExists() { 026 return ifExists; 027 } 028 029 private TObjectName procedureName = null; 030 private TObjectNameList procedureNameList = null; 031 032 public TObjectName getProcedureName() { 033 return procedureName; 034 } 035 036 public int doParseStatement(TCustomSqlStatement psql) { 037 if (rootNode == null) return -1; 038 super.doParseStatement(psql); 039 if (rootNode instanceof TDummy){ 040 TDummy node = (TDummy) rootNode; 041 this.procedureName = (TObjectName) node.node1; 042 if (this.procedureName != null){ 043 this.procedureName.setDbObjectType(EDbObjectType.procedure); 044 } 045 046 this.procedureNameList = node.objectNameList; 047 this.ifExists = node.ifExists; 048 }else if (rootNode instanceof TDropProcedureSqlNode){ 049 TDropProcedureSqlNode sqlNode = (TDropProcedureSqlNode)rootNode; 050 procedureName = sqlNode.getProcedureName(); 051 if (this.procedureName != null){ 052 this.procedureName.setDbObjectType(EDbObjectType.procedure); 053 } 054 055 procedureNameList = sqlNode.getProcedureNameList(); 056 057 // postgresql 058 procedures = sqlNode.getProcedures(); 059 if (procedures != null){ 060 this.procedureName = procedures.get(0).getFunctionName(); 061 this.procedureName.setDbObjectType(EDbObjectType.procedure); 062 } 063 064 this.parameterDeclarations = sqlNode.getParameterDeclarations(); 065 066 } 067 068 if (this.procedureNameList != null){ 069 procedureName = procedureNameList.getObjectName(0); 070 this.procedureName.setDbObjectType(EDbObjectType.procedure); 071 } 072 073 074 return 0; 075 } 076 077 private TParameterDeclarationList parameterDeclarations; 078 079 public TParameterDeclarationList getParameterDeclarations() { 080 return parameterDeclarations; 081 } 082 083 public void accept(TParseTreeVisitor v) { 084 v.preVisit(this); 085 v.postVisit(this); 086 } 087 088 public void acceptChildren(TParseTreeVisitor v) { 089 v.preVisit(this); 090 v.postVisit(this); 091 } 092}