Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

ayuda con un procedimiento almacenado

Estas en el tema de ayuda con un procedimiento almacenado en el foro de Bases de Datos General en Foros del Web. TEngo un problema bastante grande. Tengo que "transformar" una funcion en java a un procedimineto almacenado. Lo que haría la funcion es básicamente recorrer una ...
  #1 (permalink)  
Antiguo 11/01/2008, 09:19
 
Fecha de Ingreso: mayo-2005
Mensajes: 294
Antigüedad: 19 años
Puntos: 0
Pregunta ayuda con un procedimiento almacenado

TEngo un problema bastante grande. Tengo que "transformar" una funcion en java a un procedimineto almacenado. Lo que haría la funcion es básicamente recorrer una tabla de pedidos y, si hay algun pedido sin asignar una mercancia se la asigno. Tengo una tabla ALMACEN, y otra PEDIDOSESTADISTICOS; la idea es que cuando inserto un nuevo lote de productos en el ALMACEN busco en la tabla PEDIDOS ESTADÍSTICOS entonces si la cantidad de productos que hay en el almacen es mayor a la cantidad que necesita el pedido se la asigno. En java algo así:

public void completarPedidos(String idAlmacen) {
PreparedStatement ps= con.prepareStatement("select cantidad from almacen where idAlmacen="+idAlmacen+"'");
ResultSet rs= ps.executeQuery();
int cantidadDisponible =rs.getInt("cantidad");

PreparedStatement ps2=con.prepareStatement("select producto from almacen where idAlmacen="+idAlmacen+"'");
ResultSet rs2=ps2.executeQuery();
String producto=rs2.getString("producto");

PreparedStatement ps3=con.prepareStatement("select fecha from almacen where idAlmacen="+idAlmacen+"'");
ResultSet rs3=ps3.executeQuery();
Date fecha=rs3.getDate("fecha");
//Además aqui tendría que formatear la fecha a "dd/mm/aaaa"

PreparedStatement ps4=con.prepareStatement("select cantidad from pedidosEstadisticos where producto=? and fecha=?");
ps4.setString(1,producto);
ps4.setString(2,fecha);
ResultSet rs4=ps4.executeQuery();
while(rs4.next()){
// si la cantidad del pedido es menor que la del almacen. Reduzco la cantidad del almacen.

Bueno el caso es que no tengo ni la más remota idea de como funcionan los procedimientos almacenados y he estado buscando información y ya se que son código pl/sql, que hay cursores, (algo que es fetch)... y muchas cosas que en concreto no me aclaran nada.
Si alguien me podía por favor ayudar con este ejemplo (que yo creo que es el más dificil de los que tengo) a ver si así yo soy capaz de hacer el resto.
Muchas gracias y un saludo
  #2 (permalink)  
Antiguo 11/01/2008, 12:59
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Re: ayuda con un procedimiento almacenado

Buenas, el martes si no te han resuelto te hecho una mano, porque ahora no tengo tiempo y hasta el martes estoy muy muy liado!

¿Que BD utilizas?

Un saludo
  #3 (permalink)  
Antiguo 11/01/2008, 15:17
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Re: ayuda con un procedimiento almacenado

Esto me suena como un simple update. Mencionas PL/SQL así que debes estar usando Oracle, y sobre como hacer un SP en Oracle no tengo ni idea.
Sin embargo, la estructura del query para dicho update, es muy sencilla:

Código:
UPDATE      almacen
SET         cantidad = a.cantidad - p.cantidad
FROM        almacen AS a
INNER JOIN  pedidosEstadisticos AS p
            ON a.producto = p.producto
            AND a.fecha = p.fecha
WHERE       a.idAlmacen = @idAlmacen
            AND p.cantidad < a.cantidad
Supuse que con reducir quisiste decir sustraer de la cantidad en almacen la cantidad en pedidos.

Última edición por Beakdan; 11/01/2008 a las 15:26
  #4 (permalink)  
Antiguo 11/01/2008, 15:43
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Re: ayuda con un procedimiento almacenado

Hola Beakdan,

El update es correcto solo para SQL Server, en Oracle la forma UPDATE FROM JOIN no esta implementada/soportada.

Saludos
  #5 (permalink)  
Antiguo 11/01/2008, 20:42
 
Fecha de Ingreso: mayo-2005
Mensajes: 294
Antigüedad: 19 años
Puntos: 0
Re: ayuda con un procedimiento almacenado

Muchisimas gracias a todos!
De verdad soys muy amables pero siento decepcionaros. Este procedimiento y otros más los tenía que haber terminado hoy. Con alguno me atasqué (incluido este, poruqe luego me di cuenta qeu no estaba haciendo lo que realmente qeuría y tenía que modificar alguna cosilla y no sabía como...) así qeu nada no he podido hacerlo.
Muchas gracias de todos modosl.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:04.