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
DROP 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.