Возвращать два типа стоимости в Функциях с PLSQL

Я пытаюсь сделать так, чтобы функция PLSQL возвратила мне прибыль от продаж, и одновременно описание продукта.

Я добился того, чтобы он возвратил благодеяние, которое не больше, что использовать sum() с двумя подмостками.

Но поскольку я способствую тому, чтобы помимо благодеяния, я возвратился описание также?

Это Функция:

DELIMITER $$
CREATE FUNCTION calcularBeneficio(idVenta int) RETURNS double
BEGIN
DECLARE beneficio DOUBLE;
    SELECT SUM(productos.pvp * ventas.cantidad) INTO beneficio 
    FROM ventas, productos 
    WHERE idventa = idVenta AND productos.ID = ventas.IDPRODUCTO;
    RETURN beneficio;
END;$$
DELIMITER ;

Идея состоит в том, чтобы перемещать как параметр идентификацию продажи, и доставать Ваше благодеяние.

0
задан 01.11.2019, 13:00
1 ответ

Ты мог бы создавать функцию, которая возвращала бы тебе таблицу

DELIMITER $
  CREATE FUNCTION calcularBeneficio(idVenta int) RETURNS table(beneficio double, descripcion text)
   BEGIN
   DECLARE beneficio DOUBLE;descripcion TEXT;
   SELECT SUM(productos.pvp * ventas.cantidad), descripcion INTO beneficio, descripcion
   FROM ventas, productos 
WHERE idventa = idVenta AND productos.ID = ventas.IDPRODUCTO;
RETURN next;
END;$
DELIMITER ;

и результат, ты это получаешь с select * from calcularBeneficio (idVenta) también ты мог бы использовать эту другую форму

    DELIMITER $
      CREATE FUNCTION calcularBeneficio(idVenta int) RETURNS table(beneficio double, descripcion text)
      BEGIN
      RETURN QUERY
         SELECT SUM(productos.pvp * ventas.cantidad), descripcion 
         FROM ventas, productos 
         WHERE idventa = idVenta AND productos.ID = ventas.IDPRODUCTO;
     END;$
    DELIMITER ;
2
ответ дан 01.12.2019, 14:40

Теги

Похожие вопросы