2013/10/8 »» Thiago Pedro «« <[email protected]>

> Estou começando minha caminhada no PostgreSQL.
> Minha experiência é no SQL Server e por lá Procedures/Function
> independentes de Parâmetros In/Out, não podem ser duplicados.
>
> Alguém pode me explicar o motivo de que no PostgreSql seja possível ?
>
>
A resposta curta seria: porque quiseram fazer assim... =D

Mas claro, o fato é que o PostgreSQL é considerado um banco de dados *
Objeto-*Relacional, isso significa que ele aceita outras coisas além de
tipos e funções convencionais, como:

* Arrays
* Tipos de intervalos
* Operadores de usuário
* Sobrecarga de operadores
* Sobrecarga de funções (o caso)
* etc...

A funcionalidade em questão é a sobrecarga de funções (veja [1] para mais
detalhes), o que diz que uma função não é determinada somente pelo seu
nome, mas sim pelo nome e parâmetros (quantidade de parâmetros e tipos de
cada um). Já vi pessoal vindo do MS SQL Server que acha que isso é ruim,
mas na verdade, se bem utilizado, é uma funcionalidade fantástica. Com ela
você pode criar funções de mesmo nome, mas que com parâmetros diferentes
tenha um resultado (até mesmo de tipos) diferentes também. Claro, quando eu
digo bem usada, eu quero dizer que só crie funções de mesmo nome se a
semântica delas forem as mesmas, se não vira bagunça.

Vale lembrar que é exatamente o mesmo comportamento presente nas linguagens
com orientação a objetos, como C++, Java, C#, etc...

[1] http://www.postgresql.org/docs/9.1/static/xfunc-overload.html

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