[firebase-br] Procedure

Rubem Nascimento da Rocha djpardalrocha em hotmail.com
Qua Set 20 08:43:42 -03 2006


Olha a procedure abaixo e compare ela depois com o código que vc mandou, e 
vc vai perceber o que vc deixou de fazer:

CREATE PROCEDURE PRODUTOS
(
   DAT1 DATE,
   DAT2 DATE
)
RETURNS
(
   CODIGO INTEGER,
   QUANT NUMERIC(15,3),
   VALOR NUMERIC(15,3)
)
AS
  BEGIN
    FOR SELECT P.COD_PRODUTO, MAX(D.VR_UNIT) VR_UNIT, MAX(P.QUANTIDADE)
          FROM T_PROD_PEDIDO P, T_PRODUTO D
         WHERE P.DT_EMISSAO BETWEEN :DAT1 AND :DAT2
      GROUP BY P.COD_PRODUTO
      ORDER BY MAX(P.QUANTIDADE) DESC
      INTO :CODIGO, :VALOR, :QUANT DO
    BEGIN
      SUSPEND;
    END
END

Sds.


>From: Caçula <info em cacula.ind.br>
>Reply-To: FireBase <lista em firebase.com.br>
>To: Firebird <lista em firebase.com.br>
>Subject: [firebase-br] Procedure
>Date: Wed, 20 Sep 2006 08:36:24 -0300
>
>Bom dia lista.
>
>Estou desenvolvendo uma procedure, para selecionar os produtos mais 
>vendidos. Estou fazendo uma seleção da tabela de produtos do pedido, mas 
>também preciso do valor unitário que consta no cadastro do produto, mas não 
>estou conseguindo. Veja como ficou
>
>CREATE PROCEDURE PRODUTOS (
>    DAT1 DATE,
>    DAT2 DATE)
>RETURNS (
>    CODIGO INTEGER,
>    QUANT NUMERIC(15,3),
>    VALOR NUMERIC(15,3))
>AS
>begin
>  /* Procedure Text */
>  FOR SELECT P.COD_PRODUTO, D.VR_UNIT, MAX(P.QUANTIDADE) FROM T_PROD_PEDIDO 
>P, T_PRODUTO D
>  WHERE P.DT_EMISSAO BETWEEN :DAT1 AND :DAT2
>  GROUP BY P.COD_PRODUTO
>  ORDER BY MAX(P.QUANTIDADE) DESC INTO :CODIGO, :VALOR, :QUANT
>  DO
>  suspend;
>end
>
>Se deixar assim, dá erro, e se colocar o D.VR_UNIT no GROUP BY, ele me 
>retorna informação errada. Como que faço pra agrupar por código de produto, 
>e conseguir pegar o VR_UNIT da tabela de produto.
>
>Obrigado
>
>Alexandre Gonçalves


>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>Para editar sua configuração na lista, use o endereço 
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa

_________________________________________________________________
MSN Busca: fácil, rápido, direto ao ponto.  http://search.msn.com.br





Mais detalhes sobre a lista de discussão lista