• Domingo 22 de Diciembre de 2024, 11:11

Autor Tema:  Callablestatement  (Leído 1597 veces)

antony_soluciones

  • Miembro MUY activo
  • ***
  • Mensajes: 222
    • Ver Perfil
Callablestatement
« en: Jueves 9 de Junio de 2005, 20:42 »
0
Hola a todos.

Ultimamente he estado desarrollando mi proyecto de grado :smartass:  y he tenido unos problemas, ayer postee uno, hoy quiero postear otro y espero que con este si me puedan colaborar.

He creado un procedimiento almacenado en firebird, este procedimiento retorna una tabla de 13 columnas por n filas, bien lo intente hacer de la siguiente forma, observemos el siguiente codigo:
Código: Text
  1.  
  2.  
  3.     rs = st.executeQuery("SELECT * FROM OBTENER_CARTERA('2005/01/01')")      
  4.     while(rs.next()) {
  5.         System.out.println(rs.getObject(1));
  6.         System.out.println(rs.getObject(2));
  7.         System.out.println(rs.getObject(3));
  8.         System.out.println(rs.getObject(4));
  9.         System.out.println(rs.getObject(5));
  10.         System.out.println(rs.getObject(6));
  11.         System.out.println(rs.getObject(7));
  12.         System.out.println(rs.getObject(8));
  13.         System.out.println(rs.getObject(9));
  14.         System.out.println(rs.getObject(10));
  15.         System.out.println(rs.getObject(11));
  16.         System.out.println(rs.getObject(12));
  17.         System.out.println(rs.getObject(13));
  18.     }
  19.  
  20.  
  21.  

Bueno este codigo arroja una exception que informa que el indice 9 no existe, pero claro que existe por que yo le hago el mismo query directo sobre la base de datos y me arroja todos los resultados.

Bien ya que lo anterior no funcionó, decidí utilizar una interfaz del paquete java.sql que se llama CallableStatement el codigo que realize es el siguiente, pongamos atencion.

Código: Text
  1.  
  2.  
  3. Connection con = DriverManager.getConnection(ENLACE_LOGICO,USER,PASSWORD);
  4.         ResultSet rs = null;
  5.         java.sql.CallableStatement cs = con.prepareCall("{call PRO_CALC_CARTERA(?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
  6.         cs.setTimestamp(1,java.sql.Timestamp.valueOf("2006-11-11 00:00:00.0"));
  7.         cs.registerOutParameter(2,java.sql.Types.VARCHAR);
  8.         cs.registerOutParameter(3,java.sql.Types.VARCHAR);
  9.         cs.registerOutParameter(4,java.sql.Types.VARCHAR);
  10.         cs.registerOutParameter(5,java.sql.Types.VARCHAR);
  11.         cs.registerOutParameter(6,java.sql.Types.VARCHAR);
  12.         cs.registerOutParameter(7,java.sql.Types.VARCHAR);
  13.         cs.registerOutParameter(8,java.sql.Types.VARCHAR);
  14.         cs.registerOutParameter(9,java.sql.Types.INTEGER);
  15.         cs.registerOutParameter(10,java.sql.Types.VARCHAR);
  16.         cs.registerOutParameter(11,java.sql.Types.DATE);
  17.         cs.registerOutParameter(12,java.sql.Types.FLOAT);
  18.         cs.registerOutParameter(13,java.sql.Types.FLOAT);
  19.         cs.registerOutParameter(14,java.sql.Types.INTEGER);
  20.         //rs = (ResultSet)cs.getObject(1);
  21.         rs = cs.executeQuery();
  22.         while(rs.next()) {
  23.             System.out.println(rs.getObject(1));
  24.             System.out.println(rs.getObject(2));
  25.             System.out.println(rs.getObject(3));
  26.             System.out.println(rs.getObject(4));
  27.             System.out.println(rs.getObject(5));
  28.             System.out.println(rs.getObject(6));
  29.             System.out.println(rs.getObject(7));
  30.             System.out.println(rs.getObject(8));
  31.             System.out.println(rs.getObject(9));
  32.             System.out.println(rs.getObject(10));
  33.             System.out.println(rs.getObject(11));
  34.             System.out.println(rs.getObject(12));
  35.             System.out.println(rs.getObject(13));
  36.         }
  37.  
  38.  

Porsupesto que este codigo tampoco sirve.

que sepa como hacer lo que estoy haciendo o si alguien quiere que sea mas explicito por favor responda a este mensage, muchas gracias por la colaboracion que me puedan brindar...

Adios amigos.
[size=109]Antony Hernan Delgado Solano. @antonyDelSol en twitter[/size]