Bem, uma sugestão é criar uma Function com o retorno SETOF Record. Não sei
quanto a desempenho em grandes tabelas mas para mim serviu.

CREATE OR REPLACE FUNCTION nome_funcao(int4) RETURNS SETOF record AS
$BODY$
   DECLARE
     v_param ALIAS FOR $1;
     v_cursor record; 
     c_cursor CURSOR (param tipo) FOR 
                  (SELECT 
                     campo1, campo2, campo3 
                  FROM 
                    tabela
                  WHERE
                    campo1 = param); --note que eu coloquei uma condição
para essa consulta
    BEGIN  
      OPEN c_cursor(v_param); -- aqui vc diz que a consulta acima leva o
parâmetro da chamada da função
      LOOP
        FETCH c_cursor into v_cursor;
        EXIT WHEN NOT FOUND;
        RETURN NEXT v_cursor; 
      END LOOP;
      CLOSE c_cursor; -- não esqueça de fechar o cursor antes de terminar
senão dá erro
   END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;


Uso:

SELECT * nome_funcao(10) AS (campo1 tipo, campo2 tipo, campo3 tipo)  -- onde
tipo é o tipo do campo no SELECT chamado lá no c_cursor

Essa situação serve pra quando vc tem os parâmetros definidos, acredito que
seja o seu caso pois vc diz
" Serie bom se o banco já fizesse tudo e devolvesse os dados. Deixando assim
o programa Front-End somente passar os parâmetros."

Nesse caso o front end só vai chamar a função com os parâmetros e receber a
tabela gerada pela função.

Espero que eu tenha ajudado

Renato



-----Mensagem original-----
De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Em nome de Thiago Risso
Enviada em: sexta-feira, 9 de maio de 2008 14:37
Para: Comunidade PostgreSQL Brasileira
Assunto: Re: [pgbr-geral] RES: Views

> Procedures ??
Imagine a quantidade/complexibilidade de procedures que você iria
precisar criar para tirar TODAS as passagens de parametros do
"front-end".
E mais um complicador... O Planejador não é inteligente quando
trata-se delas ... vc deve informar o CUSTO (que é default ,
independente das CONDIÇÕES [aka parametros] ) ou ele assume o padrão
(que não me lembro agora... acho que é 10) ..!

-- 
Att:
Thiago Risso
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

----------------------------------------------------------------------------
------
Esta mensagem foi verificada pelo sistema de Anti-virus da SJB Solados.



----------------------------------------------------------------------------------
Esta mensagem foi verificada pelo sistema de Anti-virus da SJB Solados.

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a