001package gudusoft.gsqlparser.stmt.oracle; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.TObjectName; 005import gudusoft.gsqlparser.nodes.TStatementListSqlNode; 006import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 007import gudusoft.gsqlparser.stmt.TCommonStoredProcedureSqlStatement; 008 009/** 010 * The CREATE TYPE BODY defines or implements the member methods defined in the 011 * object type specification. 012 * You create object types with the CREATE TYPE({@link TPlsqlCreateType}) and the CREATE TYPE BODY({@link TPlsqlCreateTypeBody}) statements. 013*/ 014public class TPlsqlCreateTypeBody extends TCommonStoredProcedureSqlStatement { 015 public TPlsqlCreateTypeBody(){ 016 this(EDbVendor.dbvoracle); 017 } 018 019 public TPlsqlCreateTypeBody(EDbVendor dbvendor){ 020 super(dbvendor); 021 sqlstatementtype = ESqlStatementType.sstplsql_createtypebody ; 022 } 023 024 public TObjectName getStoredProcedureName(){ 025 return typeName; 026 } 027 private TObjectName typeName = null; 028 029 public TObjectName getTypeName() { 030 return typeName; 031 } 032 033 private TStatementListSqlNode stmts = null; 034 035 public void init(Object arg1,Object arg2) 036 { 037 typeName = (TObjectName)arg1; 038 //typeName.setObjectType(TObjectName.ttobjTypeName); 039 typeName.setDbObjectType(EDbObjectType.user_defined_type); 040 041 stmts = (TStatementListSqlNode)arg2; 042 } 043 044 public TStatementListSqlNode getStmts() { 045 return stmts; 046 } 047 048 public int doParseStatement(TCustomSqlStatement psql) { 049 if (rootNode == null) return -1; 050 if (super.doParseStatement(psql) != 0) return -1; 051 052 TPlsqlCreateTypeBody typeBody = (TPlsqlCreateTypeBody)rootNode; 053 typeName = typeBody.getTypeName(); 054 055 typeBody.getStmts().doParse(this, ESqlClause.unknown); 056 057 for(int i= 0; i<typeBody.getStmts().size();i++){ 058 this.getBodyStatements().add(typeBody.getStmts().getStatementSqlNode(i).getStmt()); 059 } 060 061 //super.doParseStatement(psql); 062 return 0; 063 } 064 065 public void accept(TParseTreeVisitor v){ 066 v.preVisit(this); 067 v.postVisit(this); 068 } 069 070 public void acceptChildren(TParseTreeVisitor v){ 071 v.preVisit(this); 072 v.postVisit(this); 073 } 074 075 public void setTypeName(TObjectName typeName) { 076 this.typeName = typeName; 077 } 078 079 080}