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

Responder a