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