Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Consulta sobre proceso almacenamiento y SETOF

Estas en el tema de Consulta sobre proceso almacenamiento y SETOF en el foro de PostgreSQL en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 14/12/2011, 16:55
 
Fecha de Ingreso: diciembre-2011
Mensajes: 1
Antigüedad: 7 años, 9 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.

Etiquetas: almacenamiento, end, proceso, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:17.