1 34 package smallsql.database; 35 36 40 abstract class ExpressionFunctionReturnP1 extends ExpressionFunction { 41 42 43 boolean isNull() throws Exception { 44 return param1.isNull(); 45 } 46 47 48 Object getObject() throws Exception { 49 if(isNull()) return null; 50 int dataType = getDataType(); 51 switch(dataType){ 52 case SQLTokenizer.BIT: 53 case SQLTokenizer.BOOLEAN: 54 return getBoolean() ? Boolean.TRUE : Boolean.FALSE; 55 case SQLTokenizer.BINARY: 56 case SQLTokenizer.VARBINARY: 57 return getBytes(); 58 case SQLTokenizer.TINYINT: 59 case SQLTokenizer.SMALLINT: 60 case SQLTokenizer.INT: 61 return new Integer ( getInt() ); 62 case SQLTokenizer.BIGINT: 63 return new Long ( getLong() ); 64 case SQLTokenizer.REAL: 65 return new Float ( getFloat() ); 66 case SQLTokenizer.FLOAT: 67 case SQLTokenizer.DOUBLE: 68 return new Double ( getDouble() ); 69 case SQLTokenizer.MONEY: 70 case SQLTokenizer.SMALLMONEY: 71 return Money.createFromUnscaledValue( getMoney() ); 72 case SQLTokenizer.NUMERIC: 73 case SQLTokenizer.DECIMAL: 74 return getNumeric(); 75 case SQLTokenizer.CHAR: 76 case SQLTokenizer.NCHAR: 77 case SQLTokenizer.VARCHAR: 78 case SQLTokenizer.NVARCHAR: 79 case SQLTokenizer.LONGNVARCHAR: 80 case SQLTokenizer.LONGVARCHAR: 81 return getString(); 82 case SQLTokenizer.LONGVARBINARY: 83 return getBytes(); 84 case SQLTokenizer.DATE: 85 case SQLTokenizer.TIME: 86 case SQLTokenizer.TIMESTAMP: 87 case SQLTokenizer.SMALLDATETIME: 88 return new DateTime( getLong(), dataType ); 89 case SQLTokenizer.UNIQUEIDENTIFIER: 90 return getBytes(); 91 default: throw createUnspportedDataType(param1.getDataType()); 92 } 93 } 94 95 96 int getDataType() { 97 return param1.getDataType(); 98 } 99 100 101 int getPrecision() { 102 return param1.getPrecision(); 103 } 104 105 106 final int getScale(){ 107 return param1.getScale(); 108 } 109 } 110 | Popular Tags |