001package gudusoft.gsqlparser.stmt; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.nodes.TConstant; 005import gudusoft.gsqlparser.nodes.TObjectName; 006import gudusoft.gsqlparser.nodes.TTypeName; 007 008 009/** 010 * Base class of procedure and function. 011 */ 012public class TRoutine extends TCommonStoredProcedureSqlStatement { 013 014 public static final int LANGUAGE_UNKNOWN = 0; 015 public static final int LANGUAGE_SQL = 1; 016 public static final int LANGUAGE_PLPGSQL = 1; 017 018 protected int language = LANGUAGE_SQL ; 019 020 public TRoutine(EDbVendor dbvendor) { 021 super(dbvendor); 022 } 023 024 protected TTypeName returnDataType = null; 025 026 public TTypeName getReturnDataType() { 027 return returnDataType; 028 } 029 030 public void setReturnDataType(TTypeName returnDataType) { 031 this.returnDataType = returnDataType; 032 } 033 034 private TObjectName routineName; 035 036 public void setRoutineName(TObjectName routineName) { 037 this.routineName = routineName; 038 } 039 040 public TObjectName getRoutineName() { 041 return routineName; 042 } 043 044 private String routineLanguage; 045 046 public void setRoutineLanguage(String routineLanguage) { 047 this.routineLanguage = routineLanguage; 048 } 049 050 public String getRoutineLanguage() { 051 return routineLanguage; 052 } 053 054 private TConstant routineLanguageInConstant; 055 056 public void setRoutineLanguageInConstant(TConstant routineLanguageInConstant) { 057 this.routineLanguageInConstant = routineLanguageInConstant; 058 } 059 060 public TConstant getRoutineLanguageInConstant() { 061 return routineLanguageInConstant; 062 } 063 064 private String routineBody; 065 066 public void setRoutineBody(String routineBody) { 067 this.routineBody = routineBody; 068 } 069 070 public String getRoutineBody() { 071 return routineBody; 072 } 073 074 private TConstant routineBodyInConstant; 075 076 public void setRoutineBodyInConstant(TConstant routineBodyInConstant) { 077 this.routineBodyInConstant = routineBodyInConstant; 078 } 079 080 public TConstant getRoutineBodyInConstant() { 081 return routineBodyInConstant; 082 } 083 084 public boolean isBodyInSQL(){ 085 if (getRoutineLanguage() == null) return true; 086 087 return getRoutineLanguage().equalsIgnoreCase("sql")||getRoutineLanguage().equalsIgnoreCase("plpgsql") 088 ||getRoutineLanguage().equalsIgnoreCase("plvsql")||getRoutineLanguage().equalsIgnoreCase("nzplsql"); 089 } 090 091 public boolean isGaussDBSpInOracle(){ 092 // GaussDB stored procedure can be written in Postgre or Oracle 093 // if the language clause is not picked up during getRawSqlStatement() method, then we know it's in Oracle syntax 094 return (getRoutineLanguage() == null); 095 } 096}