MySQL ha dicho: #1054 - La columna 'cantidad' en field list es desconocida
Publicado por daniel hernandez (1 intervención) el 10/02/2023 03:41:31
DELIMITER $$
CREATE PROCEDURE procesar_venta(cod_usuario int, cod_cliente int, varchar(50))
BEGIN
DECLARE factura int;
DECLARE registros int;
DECLARE total DECIMAL(10,2);
DECLARE nueva_existencia int;
DECLARE existencia_actual int;
DECLARE tmp_cod_producto int;
DECLARE tmp_cant_producto int;
DECLARE a int;
SET a = 1;
CREATE TEMPORARY TABLE tbl_tmp_tokenuser (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
cod_prod BIGINT,
cant_prod int);
SET registros = (SELECT COUNT(*) FROM detalle_temp WHERE token_user = token);
IF registros > 0 THEN
INSERT INTO tbl_tmp_tokenuser(cod_prod,cant_prod) SELECT cod_producto,cantidad FROM detalle_temp WHERE token_user = token;
INSERT INTO factura(usuario,cod_cliente) VALUES(cod_usuario,cod_cliente);
SET factura = LAST_INSERT_ID();
INSERT INTO detalle_factura(num_factura,cod_producto,cantidad,precio_venta) SELECT (factura) as num_factura,cod_producto,cantidad,precio_venta FROM detalle_temp WHERE token_user = token;
WHILE a <= registros DO
SELECT cod_prod,cant_prod INTO tmp_cod_producto, tmp_cant_producto FROM tbl_tmp_tokenuser WHERE id = a;
SELECT existencia INTO existencia_actual FROM producto WHERE cod_producto = tmp_cod_producto;
SET nueva_existencia = existencia_actual - tmp_cant_producto;
UPDATE producto SET existencia = nueva_existencia WHERE cod_producto = tmp_cod_producto;
SET a=a+1;
END WHILE;
SET total = (SELECT SUM(cantidad * precio_venta) FROM detalle_temp WHERE token_user = token);
UPDATE factura SET totalfactura = total WHERE num_factura = factura;
DELETE FROM detalle_temp WHERE token_user = token;
TRUNCATE TABLE tbl_tmp_tokenuser;
SELECT * FROM factura WHERE num_factura = factura;
ELSE
SELECT 0;
END IF;
END;$$
DELIMITER ;
CREATE PROCEDURE procesar_venta(cod_usuario int, cod_cliente int, varchar(50))
BEGIN
DECLARE factura int;
DECLARE registros int;
DECLARE total DECIMAL(10,2);
DECLARE nueva_existencia int;
DECLARE existencia_actual int;
DECLARE tmp_cod_producto int;
DECLARE tmp_cant_producto int;
DECLARE a int;
SET a = 1;
CREATE TEMPORARY TABLE tbl_tmp_tokenuser (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
cod_prod BIGINT,
cant_prod int);
SET registros = (SELECT COUNT(*) FROM detalle_temp WHERE token_user = token);
IF registros > 0 THEN
INSERT INTO tbl_tmp_tokenuser(cod_prod,cant_prod) SELECT cod_producto,cantidad FROM detalle_temp WHERE token_user = token;
INSERT INTO factura(usuario,cod_cliente) VALUES(cod_usuario,cod_cliente);
SET factura = LAST_INSERT_ID();
INSERT INTO detalle_factura(num_factura,cod_producto,cantidad,precio_venta) SELECT (factura) as num_factura,cod_producto,cantidad,precio_venta FROM detalle_temp WHERE token_user = token;
WHILE a <= registros DO
SELECT cod_prod,cant_prod INTO tmp_cod_producto, tmp_cant_producto FROM tbl_tmp_tokenuser WHERE id = a;
SELECT existencia INTO existencia_actual FROM producto WHERE cod_producto = tmp_cod_producto;
SET nueva_existencia = existencia_actual - tmp_cant_producto;
UPDATE producto SET existencia = nueva_existencia WHERE cod_producto = tmp_cod_producto;
SET a=a+1;
END WHILE;
SET total = (SELECT SUM(cantidad * precio_venta) FROM detalle_temp WHERE token_user = token);
UPDATE factura SET totalfactura = total WHERE num_factura = factura;
DELETE FROM detalle_temp WHERE token_user = token;
TRUNCATE TABLE tbl_tmp_tokenuser;
SELECT * FROM factura WHERE num_factura = factura;
ELSE
SELECT 0;
END IF;
END;$$
DELIMITER ;
Valora esta pregunta
0