0
基本的には、どこに終了する必要があるのかわかりませんでした。だから、エラーを修正するためにどこに配置しなければならないのかを教えてくれることを願ってください。 ありがとうございました ............................................... .....................ストアドプロシージャSQL構文:error missing '' end '
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
'区切り//'と最後の行が 'ENDになるととても最初の行を追加します。//' –
ありがとうございます。しかし、まだそこにエラーがあります – robto09
コードのコメントは#で前に置く必要があります(mysqlの1行コメント用) –