2014-02-05 Matheus Saraiva <[email protected]>: > > Em 05-02-2014 17:02, Douglas Fabiano Specht escreveu: > > > > > Em 5 de fevereiro de 2014 16:40, Matheus Saraiva < > [email protected]> escreveu: > >> Em 05-02-2014 12:54, Euler Taveira escreveu: >> >> On 05-02-2014 11:32, Matheus Saraiva wrote: >>> >>>> Quero deixar a clausula where encapsulada na view e na chamada da view >>>> eu passaria apenas o nome 'matheus', 'paulo', 'joão', etc.... >>>> >>>> E você pode deixar condições da cláusula WHERE encapsuladas na VIEW. >>> Por >>> exemplo: >>> >>> CREATE VIEW funcionarios_ativos AS SELECT nome, salario FROM >>> funcionarios WHERE status = TRUE; >>> >>> SELECT * FROM funcionarios_ativos WHERE nome = 'foo'; >>> >>> Ele apresentará somente funcionários cujo nome é 'foo' e que estejam >>> "ativos". O que a visão faz é mesclar o SELECT que a definiu com o >>> SELECT na qual ela foi utilizada. Portanto, internamente temos uma >>> reescrita da consulta para: >>> >>> SELECT nome, salario FROM funcionarios WHERE status = TRUE AND nome = >>> 'foo'; >>> >>> Observe que *somente* as colunas mencionadas na definição da visão são >>> apresentadas. >>> >>> >>> >> E se eu quisesse não escrever nenhum WHERE na linha que chama a VIEW? >> Algo como: >> >> >> CREATE VIEW funcionarios_ativos AS SELECT nome, salario FROM >> funcionarios WHERE nome = (VALOR SERÁ PASSADO NA CHAMADA DA VIEW); >> >> SELECT * FROM funcionarios_ativos (VALOR QUE SERÁ USADO NO WHERE >> ENCAPSULADO); >> >> Como ficaria? >> >> _______________________________________________ >> pgbr-geral mailing list >> [email protected] >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> > > Mateus > explique melhor por que vc precisa ser dessa maneira, pois diretamente na > view nao é possivel, somente criando uma função para isso. > > Quero fazer o que o Matheus Oliveira fez, porém, com VIEW. Meu objetivo > com isso é minimizar o máximo possível o tamanho da linha ao chamar a view. > Vi que isso pode ser feito com funções, mas trabalhar com VIEW é mais > prático. Resumindo quero deixar tudo encapsulado sem ter que escrever > clausula WHERE na linha de chamada da view. Quero apenas passar o nome da > view e o valor que será usado no filtro where que está dentro da view. > Igualmente como eu faria se fosse uma função: SELECT * FROM > sp_teste('TESTANDO');. > Mas pelo que vejo, view não suporta isso. Sendo possível apenas com função. > > Exatamente, não aceita. Não há muito mais que possamos fazer aqui. Só repense bem se vale a pena ficar criando muitas funções só para economizar algumas palavras no WHERE. Ok?
Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
