Pessoal grato pela ajuda

Consegui resolver usando o parametro "EXTERNAL SECURITY DEFINER" na
definição da function.
Jota, foi claro sim irei usar sua recomendação.

Valeu



2009/11/30 JotaComm <jota.c...@gmail.com>

> Olá,
>
> 2009/11/30 Tiago Valério <tiagosvale...@gmail.com>
>
>> Fiz da seguinte forma
>>
>>
>> CREATE OR REPLACE VIEW vw_tabela as
>> select id,nmcliente,endereco,tel from esquema.tabela
>> order by id
>> limit 1;
>>
>> Então fiz o seguinte consulta na view
>>
>> select * from vw_tabela
>> where id=1234;
>>
>> Na situacao acima o resultado gerado é zero.
>>
>
> Você não pode fazer o limit 1 na chamada da view?
>
> Ao fazer dentro da view quando você faz limit 1 você vai trazer apenas o
> primeiro registro, se você fizer teste com o primeiro registro da tabela
> você verá que vai funcionar, se fizer com qualquer outro não.
>
> Recomendaria você usar o limit na chamada da view.
>
> PS: Não sei se minha explicação ficou clara.
>
>>
>> Porem se faço  a consulta direto na tabela conforme abaixo, o registro é
>> retornado.
>>
>>
>> select * from esquema.tabela
>> where id=1234;
>>
>> Será alguma restrição do limit isto?
>>
>> Desde obrigado pela força.
>>
>>
>>
>>
>>
>>
>> 2009/11/30 JotaComm <jota.c...@gmail.com>
>>
>> Opa,
>>>
>>> 2009/11/30 Tiago Valério <tiagosvale...@gmail.com>
>>>
>>>>  Leo
>>>>
>>>> Obrigado pela ajuda e aproveitando, para colocar em pratica os
>>>> conhecimentos adquiridos.
>>>>
>>>> Tentei com a criação da view e definindo limit 1.Porem quando uso o
>>>> where junto com a view  a consulta retorna zerada, e o registro está na
>>>> tabela.Pode haver restrição do limit neste caso?
>>>>
>>>>
>>>> Você pode mandar a definição da view e um exemplo dos dados, podem ser
>>>> ficticios.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> 2009/11/30 Leonardo Cezar <lhce...@gmail.com>
>>>>
>>>> 2009/11/30 Tiago Valério <tiagosvale...@gmail.com>:
>>>>> <corte>
>>>>>
>>>>> > Porem não  gostaria de dar o grant de select para o usuario em
>>>>> "tabela",
>>>>> > pois somente assim a function funcionaria.
>>>>> >
>>>>> > Neste caso teria como resolver esta questão sem o grant de select em
>>>>> > "tabela"?
>>>>>
>>>>> CREATE FUNCTION seleciona_tabela(...)
>>>>> RETURNS tabela
>>>>> LANGUAGE PLPGSQL
>>>>> AS $selection_tabela$
>>>>>
>>>>> [....]
>>>>>
>>>>> END;
>>>>> $selecion_tabela$
>>>>> EXTERNAL SECURITY DEFINER;
>>>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>>> Utilize a opção SECURITY na definição da procedure.
>>>>>
>>>>> Por outro lado, uma visão resolveria seu problema de forma mais
>>>>> simples.
>>>>>
>>>>> -Leo
>>>>> --
>>>>> Leonardo Cezar
>>>>> http://www.aslid.org.br
>>>>> http://postgreslogia.wordpress.com
>>>>> http://www.dextra.com.br/postgres
>>>>> _______________________________________________
>>>>> pgbr-geral mailing list
>>>>> pgbr-geral@listas.postgresql.org.br
>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> pgbr-geral mailing list
>>>> pgbr-geral@listas.postgresql.org.br
>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>
>>>>
>>>
>>> []s
>>> --
>>> JotaComm
>>> http://jotacomm.wordpress.com
>>>
>>> _______________________________________________
>>> pgbr-geral mailing list
>>> pgbr-geral@listas.postgresql.org.br
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>>
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> []s
> --
> JotaComm
> http://jotacomm.wordpress.com
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a