Stored Procedure ( Converder de FB para PostgreSQL)

28/06/2010

0

Prezados, como criar Stored Procedure no PostgreSQL para retornar dados? (O proposito da Stored Procedure utilizada é para produzir Relatórios.) No Firebird a função "Suspend" retorna a linha de um "For Select". Como converter o exemplo abaixo para PostgreSQL?   Codigo fonte SQL:




create procedure SP_VENDAS_TESTE (

   NCLIENTE integer)

returns (

   DATA date,

   VENDEDOR integer,

   PRODUTOS integer,

   VALOR_NF numeric(15,2))

as

   declare variable N_PRODUTOS numeric(12,4);

   declare variable N_VENDAS numeric(12,4);

begin



N_PRODUTOS =0;

N_VENDAS =0;



/* LOOP */

for select EMISSAO,

VENDEDOR,

QTDE_PRODUTOS,

TOTAL_NF





from vendas

where

cliente=:NCLIENTE



into :DATA, :VENDEDOR, :PRODUTOS, :VALOR_NF

do

begin



-- soma total de produtos

N_PRODUTOS = N_PRODUTOS + :PRODUTOS;



-- soma total de vendas

N_VENDAS = N_VENDAS + :VALOR_NF;



suspend;

end





end

 

  --- apos executar a SP ---

DATA:       VENDEDOR: PRODUTOS: VALOR_NF:
12/03/2009         6         1     500,00
04/03/2009         6         1     105,00
05/03/2009         6         1     105,00
08/04/2009         6         1     105,00
23/03/2009         6         1     195,00
13/03/2009        12         1     250,00
 
Moura

Moura

Responder

Posts

03/07/2010

Km Sistemas

Bom dia   Não sei se entendi direito o que esta precisando mas se for uma somatoria de vendas por período e vendedor  so este select já resolveria tanto no postgres como em qualquer banco de dados.   select EMISSAO, VENDEDOR, sum(PRODUTOS), sum(TOTAL_NF) from vendas where cliente=:NCLIENTEgroup by EMISSAO, VENDEDOR order by EMISSAO, VENDEDOR   Desta froma vc tera   Espero ter ajudado.
Responder

04/07/2010

Moura

Prezados "Equipe K&M", O que preciso é saber como montar a "estrutura" de uma Stored Procedure em PostgreSQL para trazer o mesmo resultado que o codigo acima (em Firebird) retorna (exemplo). 
Seu código SQL eu compreendi bem, mas como montar a Stored Procedure?
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar