I have this Error Code: 1241 Operand should contain 1 column (s)

I occupy fixing this problem some help, the error gives me when running 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 insertingletallepid

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 for inserting headproduct

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 ;
 2
Author: fredyfx, 2016-06-15

1 answers

When you do:

SET Codigo = (SELECT * FROM enc_pedido,det_pedido

Codigo it's a value (a" column") but the select will return multiple columns (it's a select * over two tables) and maybe multiple rows.

You have to change the selection so that it only returns a single column.

 2
Author: Alvaro Montoro, 2016-06-15 03:28:10