Hola a todos.
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:
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)
El ultimo parametro es de tipo tabla, es decir lo que me devuelve es una tabla con los resultados.
Pues ahora llego a mi clase java y tengo un procedimiento con el siguiente codigo.
Código:
/**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);
}
}
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.
Código:
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
Ya no se que hacer he probado todo lo que encontre por libros, manuales, internet. No se necesito algun tipo de sugerencia o algo.
Muchisimas gracias otra vez por adelantado.