I need to fix this problem some help, the error gives me when executing the main stored procedure.
main procedure
DELIMITER $$
USE `dbinterfaces`$$
DROP PROCEDURE IF EXISTS `SP_InsertarFactura`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `SP_InsertarFactura`(IN FechaPedido DATE,IN SubTotal DECIMAL (12,2),IN Descuento DECIMAL (12,2),IN Total DECIMAL (12,2),IN NumeroLinea FLOAT,IN CodigoProducto VARCHAR(20),IN CantidadPedido DECIMAL (12,2),IN Precio DECIMAL(12,2),IN PorcentajeDescuento SMALLINT(6),IN MontoDescuento DECIMAL (12,2))
BEGIN
DECLARE Codigo FLOAT;
SET Codigo = (SELECT * FROM enc_pedido,det_pedido
WHERE `det_pedido`.`COPR` = CodigoProducto COLLATE 'latin1_spanish_ci'
GROUP BY enc_pedido.`NUPE`);
CALL `SP_InsertarDetallePedido` (NumeroLinea,CodigoProducto,CantidadPedido,Precio,PorcentajeDescuent,MontoDescuento);
CALL `SP_AñadirEncabezadoProducto` (Codigo,FechaPedido,SubTotal,Descuento,Total);
END$$
DELIMITER ;
Procedure for insertingDetailOrder
DELIMITER $$
USE `dbinterfaces`$$
DROP PROCEDURE IF EXISTS `SP_InsertarDetallePedido`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `SP_InsertarDetallePedido`(NumeroLinea FLOAT, CodigoProducto VARCHAR(20), CantidadPedido DECIMAL (12,2),Precio DECIMAL(12,2), PorcentajeDescuento SMALLINT(6),MontoDescuento DECIMAL (12,2))
BEGIN
INSERT INTO det_pedido (`NUPE`,`NULI`,`COPR`,`CAPE`,`PRPE`,`PODE`,`MODE`) VALUES ("",NumeroLinea,CodigoProducto,CantidadPedido,Precio,PorcentajeDescuento,MontoDescuento);
END$$
DELIMITER ;
Procedure to insert Product Header
DELIMITER $$
USE `dbinterfaces`$$
DROP PROCEDURE IF EXISTS `SP_AñadirEncabezadoProducto`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `SP_AñadirEncabezadoProducto`(CodigoPedido VARCHAR (20),FechaPedido DATE, SubTotal DECIMAL (12,2), Descuento DECIMAL (12,2),Total DECIMAL (12,2))
BEGIN
INSERT INTO enc_pedido (`NUPE`,`FEPE`,`SUPE`,`DEPE`,`TOPE`) VALUES (CodigoPedido,FechaPedido,SubTotal,Descuento,Total);
END$$
DELIMITER ;
When you do:
Codigo
is a value (a "column") but the select is going to return multiple columns (it's anselect *
over two tables) and maybe multiple rows.You have to change the select so that it only returns a single column.