Мне нужно решить эту проблему, помогите, ошибка выдает мне при выполнении основной хранимой процедуры.
основная процедура
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 *
более двух таблиц) и, возможно, несколько строк.Вы должны изменить выбор так, чтобы он возвращал только один столбец.