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

Procedimiento Almacenado con select e inserts

Estas en el tema de Procedimiento Almacenado con select e inserts en el foro de Mysql en Foros del Web. Hola a todos, llevo tiempo mirando el foro y viendo lo que ha posteado la gente, nutriéndome de las respuestas aportadas y, hasta ahora, me ...
  #1 (permalink)  
Antiguo 18/05/2013, 04:40
 
Fecha de Ingreso: mayo-2013
Mensajes: 2
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta Procedimiento Almacenado con select e inserts

Hola a todos, llevo tiempo mirando el foro y viendo lo que ha posteado la gente, nutriéndome de las respuestas aportadas y, hasta ahora, me había servido.

El caso es que hace poco que trabajo con mysql, algo sabía de oracle, así que me está costando un poco.

Necesito crear un procedimiento almacenado que me selecciones unas variables y con esos resultados me haga las inserciones, pero no funciona.

Si lanzo los inserts sueltos funcionan, pero al intentarlo con el procedimiento, ni inserta ni me da el nº de errores que se producen.

El procedimiento es el siguiente:

Código SQL:
Ver original
  1. DROP PROCEDURE IF EXISTS `compratransaccion`;
  2. CREATE DEFINER= PROCEDURE `compratransaccion`(IN ID_CLI_COMPRA INTEGER(4), IN ID_VEST_COMPRA INTEGER(5), IN UDS_COMPRA INTEGER(3), OUT P_OK INTEGER(5))
  3. BEGIN    
  4.     DECLARE errores INTEGER(5) DEFAULT 0;
  5.     DECLARE EXISTENCIAS_DISPON INTEGER(3);
  6.     DECLARE IMPORTE_COMPRA DECIMAL(7,2);
  7.     DECLARE ID_PEDIDO_COMPRA INTEGER(5);
  8.     DECLARE F_PEDIDO_COMPRA VARCHAR(10);
  9.    
  10.     DECLARE CONTINUE HANDLER FOR SQLEXCEPTION      
  11.     BEGIN
  12.     -- ERROR
  13.     SET errores = errores+1;
  14. END;
  15. START TRANSACTION;
  16. SET F_PEDIDO_COMPRA = DATE_FORMAT(CURDATE(),'%d/%m/%Y');
  17. SELECT  EXISTENCIAS INTO EXISTENCIAS_DISPON FROM OUTLET_VEST WHERE ID_VEST=ID_VEST_COMPRA;
  18. SELECT (UDS_COMPRA*OUTLET_VEST.PRECIO) INTO IMPORTE_COMPRA FROM OUTLET_VEST WHERE ID_VEST=ID_VEST_COMPRA;
  19.  
  20. IF EXISTENCIAS_DISPON>=UDS_COMPRA THEN
  21. UPDATE OUTLET_VEST SET EXISTENCIAS=(EXISTENCIAS_DISPON-UDS_COMPRA) WHERE ID_VEST=ID_VEST_COMPRA;
  22. INSERT INTO PEDIDO (PEDIDO.ID_CLI,PEDIDO.F_PEDIDO,PEDIDO.TIPO,PEDIDO.ESTADO,PEDIDO.IMPORTE,PEDIDO.TIPO_IVA,PEDIDO.MODO_PAGO) VALUES (ID_CLI_COMPRA,F_PEDIDO_COMPRA,'WEB', 'COMPRADO', IMPORTE_COMPRA,21,'TRANSFER');
  23. SELECT ID_PEDIDO_COMPRA= LAST_INSERT_ID();
  24. INSERT INTO LISTA_PEDIDO (LISTA_PEDIDO.ID_PEDIDO, LISTA_PEDIDO.ID_ARTICULO, LISTA_PEDIDO.CANTIDAD) VALUES(ID_PEDIDO_COMPRA, ID_VEST_COMPRA, UDS_COMPRA);
  25. ELSE
  26. SET errores=6666;
  27. END IF;
  28. IF errores = 0 THEN
  29.         COMMIT;
  30. ELSE
  31.         ROLLBACK;
  32. END IF;
  33. SET P_OK = errores;
  34. END

¿Cómo debería hacerlo?

alguien que me eche una mano para intentar arreglarlo...

Muchísimas gracias.

Un saludo, Héctor.

Etiquetas: almacenado, insert, procedimiento, select, sql
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 15:30.