我需要一些帮助来解决这个问题,在执行主存储过程时,这个错误给了我。
主要程序
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 ;
插入DetailOrder的过程
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 ;
插入产品标题的过程
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 ;
当你这样做时:
Codigo
是一个值(一个“列”),但选择将返回多个列(它是select *
两个以上的表)并且可能返回多行。您必须更改选择以使其仅返回一列。