Em 05-02-2014 17:02, Douglas Fabiano Specht escreveu:



Em 5 de fevereiro de 2014 16:40, Matheus Saraiva <matheus.sara...@gmail.com <mailto:matheus.sara...@gmail.com>> 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
    pgbr-geral@listas.postgresql.org.br
    <mailto:pgbr-geral@listas.postgresql.org.br>
    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.

--

Douglas Fabiano Specht


_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
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.
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a