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
