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 originalDROP PROCEDURE IF EXISTS `compratransaccion`;
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))
BEGIN
DECLARE errores INTEGER(5) DEFAULT 0;
DECLARE EXISTENCIAS_DISPON INTEGER(3);
DECLARE IMPORTE_COMPRA DECIMAL(7,2);
DECLARE ID_PEDIDO_COMPRA INTEGER(5);
DECLARE F_PEDIDO_COMPRA VARCHAR(10);
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
-- ERROR
SET errores = errores+1;
END;
START TRANSACTION;
SET F_PEDIDO_COMPRA = DATE_FORMAT(CURDATE(),'%d/%m/%Y');
SELECT EXISTENCIAS INTO EXISTENCIAS_DISPON FROM OUTLET_VEST WHERE ID_VEST=ID_VEST_COMPRA;
SELECT (UDS_COMPRA*OUTLET_VEST.PRECIO) INTO IMPORTE_COMPRA FROM OUTLET_VEST WHERE ID_VEST=ID_VEST_COMPRA;
IF EXISTENCIAS_DISPON>=UDS_COMPRA THEN
UPDATE OUTLET_VEST SET EXISTENCIAS=(EXISTENCIAS_DISPON-UDS_COMPRA) WHERE ID_VEST=ID_VEST_COMPRA;
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');
SELECT ID_PEDIDO_COMPRA= LAST_INSERT_ID();
INSERT INTO LISTA_PEDIDO (LISTA_PEDIDO.ID_PEDIDO, LISTA_PEDIDO.ID_ARTICULO, LISTA_PEDIDO.CANTIDAD) VALUES(ID_PEDIDO_COMPRA, ID_VEST_COMPRA, UDS_COMPRA);
ELSE
SET errores=6666;
END IF;
IF errores = 0 THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
SET P_OK = errores;
END
¿Cómo debería hacerlo?
alguien que me eche una mano para intentar arreglarlo...
Muchísimas gracias.
Un saludo, Héctor.