On 05-02-2014 15:01, Daniel Cordeiro wrote:
Obrigado pela correção Euler. Na ânsia de explicar uma forma de executar
o que se tinha interesse escrevi sem nem pensar na reescrita feita pelo
planejador antes da execução. Serei mais cuidadoso nas próximas!
Acontece que minha realidade para a consulta que impulsionou a escolha
por uma procedure ao invés de uma visão é bem diferente da exposta no
início deste tópico. Minha consulta possui diversas subqueryes com
definições de parâmetros e cálculos que não puderam ser
solucionados/otimizados com uso de CTEs ou views (e se tornou
impraticável para o momento a reescrita do modelo de negócio do banco).
E não apenas encapsular uma única condição.
Claro, sempre existe uma forma melhor de se fazer, o limite neste
contexto esta no meu 'universo conhecido' ;-P.
Daniel,
Creio que vc compreendeu bem porque o pessoal lhe indicou simplesmente
criar uma VIEW e que a mesma sofre um processo de reescrita antes de ser
executada, e com isso obtemos performance.
Então se mesmo assim vc precisa de um "parametro" em sua view, creio que
podes usar as funções "set_config" e "current_setting" [1] para criar
uma variável de sessão (ou use a extensão session_variables [2]).
Exemplo:
CREATE VIEW v_foo AS SELECT * FROM foo WHERE codigo =
current_setting('foo.codigo')::INTEGER;
Para executar:
SELECT set_config('foo.codigo', '1', false);
SELECT * FROM v_foo;
Não sei se isso lhe ajudará, até porque não compreendi bem o seu
problema de usar uma VIEW sem isso, e também tem a questão que vc terá
se "setar" na sessão o valor do seu parâmetro...
Att,
[1] http://www.postgresql.org/docs/current/static/functions-admin.html
[2] http://pgxn.org/dist/session_variables/0.0.4/
--
Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral