[firebase-br] ajuda com stored procedure

Sandro Souza escovadordebits em gmail.com
Seg Set 12 17:10:49 -03 2011


Bom dia/tarde Reijânio.

Testa o seguinte código:

SET TERM ^ ;

CREATE OR ALTER PROCEDURE REPROCESSA(
  PCOD VARCHAR(20)
) RETURNS (
  PSALDO NUMERIC(10,2),
  PENTRADAS NUMERIC(10,2),
  PSAIDAS NUMERIC(10,2)
) AS
BEGIN

  // Calcula o somatório da quantidade de entrada.
  SELECT COALESCE(SUM(QTDE), 0)
  FROM MOVIMENTO_ESTOQ
  WHERE(CODPROD = :PCOD)AND(TP_MOV = 'E')
  INTO :PENTRADAS;

  // Calcula o somatório da quantidade de saída.
  SELECT COALESCE(SUM(QTDE), 0)
  FROM MOVIMENTO_ESTOQ
  WHERE(CODPROD = :PCOD)AND(TP_MOV = 'S')
  INTO :PSAIDAS;

  // Calcula o saldo atual.
  PSALDO = PENTRADAS - PSAIDAS;

  // Retorna os resultados.
  SUSPEND;
END^

SET TERM ; ^

Espero ter ajudado mais que atrapalhado.

Em 29 de agosto de 2011 14:31, Reijanio Nunes Ribeiro
<rnribeiro em gmail.com>escreveu:

> boa tarde a todos esou com um pequeno problema com uma SP que não funciona
> poderiam me ajudar
>
> a ideia era fazer o reprocessamento de estoque, eta sintaxe me foi enviada
> por um colega da lista então gostaria muito da ajuda dos amigos para
> entender o que acontece pois ela sempre retorna 0
>
> CREATE OR ALTER PROCEDURE REPROCESSA (
>    pcod varchar(20))
> returns (
>    psaldo numeric(10,2),
>    pentradas numeric(10,2),
>    psaidas numeric(10,2))
> as
> begin
>  /* Procedure Text */
>  for select E.codprod from ESTOQUE E
>  order by E.codprod
>  into :pcod
>  do begin
>    /*total de entradas*/
>    select SUM(M.qtde) FROM movimento_estoq m
>     where M.CODPROD = :pcod AND M.tp_mov = 'E'
>    into :pentradas;
>    if (pentradas IS NULL) then pentradas = 0;
>    /*TOTAL DE SAIDAS*/
>    select SUM(M.qtde) FROM movimento_estoq m
>     where M.CODPROD = :pcod AND M.tp_mov = 'S'
>    into :psaidas;
>    if (psaidas IS NULL) then psaidas = 0;
>    /*SALDO*/
>    psaldo = pentradas - psaidas;
>      suspend;
>    end
> end
>
> sempre retorna zero e gostaria de saber se assim  faz o recalculo do
> estoque
> ou preciso usar um update nesta sentença
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista