Em 10 de setembro de 2012 18:33, Flávio Alves Granato <
[email protected]> escreveu:

> Senhores,
>
> Quando é aconselhável o uso de procedures e quando não o é? Em comparação
> com selects.
>
>
Em geral, um SELECT puro é mais rápido que uma função no banco. Um bom
conhecimento de SQL o torna capaz de substituir muitas funções com vários
passos em um único SELECT ou num INSERT ... SELECT e por aí vai.

Mas existem casos e casos. Um deles é a questão da segurança. Você não quer
dar permissão para o usuário ver todos registros e todas colunas de uma
tabela específica. Neste caso você pode criar uma VIEW ou dar GRANTs por
coluna (depende da versão do PG) e conseguir limitar as colunas que pode
ver. Com o SE-Postgres você consegue limitar as linhas de uma tabela, mas
pode ser um processo bem trabalhoso. Com uma função, você pode exigir que
um ou mais parâmetros sejam passados e a consulta seja feita de maneira bem
controlada.

Existem alguns relatórios que podem se beneficiar no uso de PLs para gerar
arquivos e fazer alguns malabarismos. Mas em geral a minha regra é sempre
essa:

Não use uma função para fazer o que você pode fazer com um único SELECT.

O Euler tem um exemplo que é fantástico, de como validar um CPF com apenas
um SELECT: http://wiki.postgresql.org/wiki/CPF
(OK, ele no final encapsula tudo numa função, mas veja que na prática é
apenas um único SELECT.

[]s
-- 
Atenciosamente,
Fábio Telles Rodriguez
blog: http:// <http://www.midstorm.org/~telles/>http://tellesr.wordpress.com
e-mail / gtalk / MSN: [email protected]
Skype: fabio_telles
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a