Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/12/2011, 17:55
jagueto
 
Fecha de Ingreso: diciembre-2011
Mensajes: 1
Antigüedad: 12 años, 4 meses
Puntos: 0
Consulta sobre proceso almacenamiento y SETOF

Hola que tal tengo el siguiente procedimiento de almacenamiento:

CREATE OR REPLACE FUNCTION TopSales(customerCode integer)
RETURNS SETOF integer AS $body$
DECLARE zCount Integer;
DECLARE zProdCode Integer;
BEGIN
SELECT count(*) INTO zCount FROM SalesHeaders WHERE custCode=customerCode;
IF zCount=0 THEN
zProdCode=-1;
ELSE
SELECT ite.prodCode INTO zProdCode FROM Customers cus, SalesHeaders hea, SalesItems ite
WHERE hea.SalesCode=ite.SalesCode AND hea.custCode=customerCode
GROUP BY cus.custCode, cus.custName, ite.prodCode
HAVING max(ite.quantity) >= ALL (SELECT max(ite2.quantity)
FROM SalesHeaders hea2, SalesItems ite2
WHERE hea2.SalesCode=ite2.SalesCode AND hea2.custCode=customerCode
GROUP BY hea2.salesCode);

END IF;
RETURN NEXT zProdCode;
END
$body$ LANGUAGE plpgsql;

Que deberia devolver los productos mas vendidos para cada cliente, el problema es que del cliente 1 se que existen 2 productos mas vendidos, prodCode 1 y 5 pero en la salida de la consulta:

SELECT *,TopSales(custCode) from Customers;

Solo me aparece el prodCode 5.

Podria alguien hecharme una mano?

Un saludo y gracias por anticipado.