A ver si alguien me puede echar una manita que llevo ya cuatro dias intentando hacer funcionar esto y ya me estoy quedando sin ideas.
Lo primero daros las gracias y ahora paso a comentaros lo que me pasa.
Tengo un procedimiento almacenado en la base de datos oracle con la siguiente cabecera.
Código:
El ultimo parametro es de tipo tabla, es decir lo que me devuelve es una tabla con los resultados.PROCEDURE confirmarPedido(laEntidad IN SMALLINT, Serie_Pedv IN VARCHAR2, elCliente IN NUMBER, IdUsrWeb IN NUMBER, laFecha IN VARCHAR2, elAlmacen IN NUMBER, losArticulos IN VARCHAR2, lasCantidades IN VARCHAR2, laDisponibilidad IN VARCHAR2, laFechaServicio IN VARCHAR2, controlarStock IN SMALLINT, laSitucionDelPed IN NUMBER, tabla IN OUT ttabla)
Pues ahora llego a mi clase java y tengo un procedimiento con el siguiente codigo.
Código:
Lo ejecuto y todo parece que va bien, pero cuando llego a la linea de cs.execute(); pues me salta la excepcion y me da el siguiente error./**metodo que confirmara el pedido del carrito*/ public void confirmarPedido(cliente cli, Vector lis_carro, PrecioCarro precio)throws CException { //devolvemos el objeto usuario correspondiente a este cliente Usuario usu = new Usuario(); usu = cli.getUsuario(); //obtenemos la fecha del pedido FechaHicusa fecha = new FechaHicusa(); try { conn.conectar(); //preparamos el envio de datos al procedimiento CallableStatement cs = conn.preparaProcedimiento("telepack.confirmarPedido(?,?,?,?,?,?,?,?,?,?,?,?,?)"); //preparamos los parametros necesarios cs.setInt("laEntidad",1); cs.setString("Serie_Pedv","'web'"); cs.setInt("elCliente",Integer.parseInt(cli.getCliente())); cs.setInt("IdUsrWeb",Integer.parseInt(usu.getId())); cs.setString("laFecha","'" + fecha.dame_bd() + "'"); cs.setInt("elAlmacen",1); cs.setString("losArticulos","'" + dameCadenaArticulos(lis_carro) + "'"); cs.setString("lasCantidades","'" + dameCadenaCantidades(lis_carro) + "'"); cs.setString("laDisponibilidad","'" + dameCadenaDisponibilidad(lis_carro) + "'"); cs.setString("laFechaServicio","'" + fecha.dame_bd() + "'"); cs.setInt("controlarStock",0); cs.setInt("laSituacionDelPed",0); cs.registerOutParameter("tabla",OracleTypes.CURSOR); //ejecutamos el procedimiento cs.execute(); //recogemos el resultado ResultSet resultado = (ResultSet)cs.getObject("tabla"); } catch(Exception e) { throw new CException("Clase LogicaCarro. Metodo confirmarPedido. Mensaje: "+e); } }
Código:
Ya no se que hacer he probado todo lo que encontre por libros, manuales, internet. No se necesito algun tipo de sugerencia o algo.PLS-00306: número o tipos de argumentos erróneos al llamar a 'CONFIRMARPEDIDO' ORA-06550: línea 1, columna 7: PL/SQL: Statement ignored
Muchisimas gracias otra vez por adelantado.