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

2

I can fix this problem with some help, the error I get 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 of inserting OrderDetail

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 insertProductHead

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 ;
    
asked by Jose Diaz 15.06.2016 в 03:31
source

1 answer

2

When you do:

SET Codigo = (SELECT * FROM enc_pedido,det_pedido

Codigo is a value (a "column") but the select will return multiple columns (it is a select * on two tables) and may be multiple rows.

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

    
answered by 15.06.2016 / 05:28
source