Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/06/2011, 13:37
hkadejo
 
Fecha de Ingreso: enero-2011
Mensajes: 47
Antigüedad: 14 años
Puntos: 5
Respuesta: llamar a funcion creada en musql desde java

Yo tengo estas funciones

Código Java:
Ver original
  1. /**
  2.      * @see Object[] parameters = new Object[]{new Integer(0),new
  3.      *      String("CC_TMP_OMISMOR")}; Integer i =
  4.      *      (Integer)executeFunction("{ ? = call p_siit_functions.getNextVal(?) }"
  5.      *      ,parameters);
  6.      * @param cadena
  7.      *            sql y arreglo de parametros
  8.      * @return nothing,
  9.      */
  10. public static Object executeFunction(String sql,
  11.             Object[] params,DataSource dataSource) throws Exception {
  12.                 Connection conn = null;
  13.                 CallableStatement cstmt = null;
  14.                 try {                  
  15.                         Object outPut;
  16.                         conn = dataSource.getConnection();              
  17.                         cstmt = conn.prepareCall(sql);
  18.                
  19.                         if (params != null) {
  20.                                 for (int i = 0; i < params.length; i++) {
  21.                                         Object param = params[i];
  22.                                         if (i == 0) {
  23.                                           cstmt.registerOutParameter(1, resolveType(param));
  24.                                         } else {
  25.                                        
  26.                                           cstmt.setObject(i + 1, param, resolveType(param));
  27.                                         }
  28.                                 }
  29.                         }              
  30.                         cstmt.execute();        
  31.                         outPut = cstmt.getObject(1);
  32.                                                
  33.                         return outPut;
  34.                 } catch (Exception ex) {
  35.                         throw new Exception(ex);
  36.                 }finally{
  37.                         if(cstmt!=null){
  38.                                 cstmt.close();
  39.                                 cstmt = null;
  40.                         }                      
  41.                         if(conn!=null){
  42.                                 conn.close();
  43.                                 conn = null;
  44.                         }              
  45.                 }
  46. }
  47.  
  48.  
  49. private static int resolveType(Object param) {
  50.                 int sqlType = Types.VARCHAR;
  51.                 if (param == null) {
  52.                     sqlType = Types.NULL;
  53.                 } else {
  54.                     Class paramClass = param.getClass();
  55.                     if (param instanceof String) {
  56.                         sqlType = Types.VARCHAR;
  57.                     } else if (paramClass.equals(double.class) ||
  58.                                param instanceof Double) {
  59.                         sqlType = Types.DOUBLE;
  60.                     } else if (param instanceof BigDecimal) {
  61.                         sqlType = Types.NUMERIC;
  62.                     } else if (param instanceof Calendar ||
  63.                                param instanceof java.sql.Date) {
  64.                         sqlType = Types.DATE;
  65.                     } else if (paramClass.equals(int.class) ||
  66.                                param instanceof Integer) {
  67.                         sqlType = Types.INTEGER;
  68.                     } else if (paramClass.equals(long.class) ||
  69.                                param instanceof Long) {
  70.                         sqlType = Types.BIGINT;
  71.                     } else if (paramClass.equals(float.class) ||
  72.                                param instanceof Float) {
  73.                         sqlType = Types.REAL;
  74.  
  75.                     }
  76.                 }
  77.                 return sqlType;
  78. }

Esta hecho para correr con una base de datos Oracle, pero ya lo he probado en MySQL con un proyecto personal y me corrio muy bien, espero te sirva.