0
基本上我沒有找到我必須結束的地方。所以希望你能幫助我知道它的位置,以解決錯誤。 謝謝 ............................................... .....................存儲過程SQL語法:錯誤缺失>'結束'
CREATE PROCEDURE `ANULAR_FACTURA` (IN ID_FACTURA VARCHAR(25))
BEGIN
'Declaro las variables que voy a necesitar'
DECLARE COD_PRODUCTO INT DEFAULT 0;
DECLARE COD_DET_VENT INT DEFAULT 0;
DECLARE CANT_VENTA INT DEFAULT 0;
DECLARE CANT_ACTUAL INT DEFAULT 0;
DECLARE CANT_FINAL INT DEFAULT 0;
'Declaro el cursor y asigno valores del select'
DECLARE FACTURA_CURSOR CURSOR FOR
SELECT PR.ID, DV.CANTIDAD, DV.ID
FROM FACTURAS FA JOIN DETALLE_VENTAS DV ON(FA.ID=DV.FACTURA)
JOIN PRODUCTOS PR ON(DV.PRODUCTO=PR.ID)
WHERE FA.ID = ID_FACTURA;
'El HANDLER detecta el momento de parar cuando se recorrer el cursor'
DECLARE CONTINUE HANDLER FOR NOT FOUND SET @hecho = TRUE;
'Aperturo el cursor'
OPEN FACTURA_CURSOR;
'Comienzo el loop'
recorrido: LOOP
FETCH FACTURA_CURSOR INTO COD_PRODUCTO, CANT_VENTA, COD_DET_VENT;
'valido que no sea el ultimo registro'
IF @hecho THEN
LEAVE recorrido;
END IF;
'Busco la cantidad actual del producto en la tabla Producto'
SELECT INVENTARIO INTO CANT_ACTUAL
FROM PRODUCTO WHERE ID = COD_PRODUCTO;
'Sumo la cantidad que se habia vendido mas lo actual'
SET CANT_FINAL := CANT_ACTUAL + CANT_VENTA;
'Actualizo la tabla Producto, haciendo ya efectia la devolucion'
UPDATE PRODUCTO SET INVENTARIO = CANT_FINAL WHERE ID = COD_PRODUCTO;
'Elimino el detalle de la factura'
DELETE FROM DETALLE_VENTAS WHERE ID = COD_DET_VENT;
END LOOP recorrido;
'Cierro el cursor'
CLOSE FACTURA_CURSOR;
'Elimino la factura completa'
DELETE FROM FACTURAS WHERE ID = ID_FACTURA;
END
缺少分隔符,所以將第一行添加爲'delimiter //',最後一行變爲'END; //' –
謝謝。但錯誤仍然存在 – robto09
代碼中的註釋需要以#爲前綴(用於mysql中的單行註釋) –