001package gudusoft.gsqlparser.sqlenv; 002 003import gudusoft.gsqlparser.nodes.TTypeName; 004import gudusoft.gsqlparser.util.SQLUtil; 005 006import java.util.*; 007 008/** 009 * SQL function 010 */ 011public class TSQLFunction extends TSQLProcedure { 012 013 public TSQLFunction(TSQLSchema sqlSchema, String functionName){ 014 super(sqlSchema,functionName,ESQLDataObjectType.dotFunction); 015 } 016 017 public TSQLFunction(TSQLOraclePackage oraclePackage, String functionName) { 018 super(oraclePackage, functionName, ESQLDataObjectType.dotFunction); 019 } 020 021 022 private TTypeName returnType; 023 024 public void setReturnType(TTypeName returnType) { 025 this.returnType = returnType; 026 } 027 028 public TTypeName getReturnType() { 029 return returnType; 030 } 031 032 /** 033 * column list 034 * @return a column list 035 */ 036 public List<TFunctoinColumn> getColumnsInReturnTable() { 037 return columnsInReturnTable; 038 } 039 040 private List<TFunctoinColumn> columnsInReturnTable = new ArrayList<TFunctoinColumn>( ); 041 042 /** 043 * add a new column to the table 044 * 045 * @param columnName column name 046 */ 047 public void addReturnColumn(String columnName){ 048 if (!searchColumnInReturnTable(columnName)){ 049 columnsInReturnTable.add(new TFunctoinColumn(this,columnName)); 050 } 051 } 052 053 public boolean searchColumnInReturnTable(String columnName){ 054 boolean isFound = false; 055 056 for(TFunctoinColumn s : columnsInReturnTable){ 057 if (s.compareTo(columnName) == 0){ 058 isFound = true; 059 break; 060 } 061 } 062 063 return isFound; 064 } 065 066 @Override 067 public String toString(){ 068 StringBuilder sb = new StringBuilder(); 069 sb.append(getName().toString()); 070 sb.append("\n\t\t\tparameters:"); 071 for(TSQLParameter p: getParameterList()){ 072 sb.append("\n\t\t\t\t"+p.getName()+",\t"+p.getParameterType().toString()); 073 } 074 if (getReturnType() != null){ 075 sb.append("\n\t\t\t return type:"+getReturnType().toString()); 076 } 077 078 079 return sb.toString(); 080 } 081 082}