Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mai

[Resolvido] md5(int) não funciona

Recommended Posts

Olá Pessoal,

 

 

estou migrando um banco de dados da versão 7.4 para a 8.4, já tive uma porção de problemas (principalmente porque não fui quem instalei e configurei a versão 7.4) mas já consegui resolver praticamente todos restou um que está me tirando o sono.

 

instalei a versão 8.4 configurei deixa toda pronta para armazenar o banco, mas ao começar os testes apareceu o erro:

Função md5(intiger) não existe.

como assim nao existe se no outro banco isso funcionava?

 

alguém sabe o que tenho que fazer para a md5 aceitar inteiros?

 

a propósito sei que posso fazer isso: select md5('1'); e isso: select md5( cast(1 as text) ); mas no meu caso nenhum dos dois resolve.

preciso que isso funcione: select md5(1);

 

vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei uma forma de resolver o problema, mas se alguém conhecer uma forma elegante por favor posta aqui:

 

CREATE OR REPLACE FUNCTION md5(bigint)

RETURNS TEXT AS

$BODY$

DECLARE

n ALIAS FOR $1;

BEGIN

RETURN md5(CAST(n AS TEXT));

END;

$BODY$

LANGUAGE 'plpgsql';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei uma forma de resolver o problema, mas se alguém conhecer uma forma elegante por favor posta aqui:

 

CREATE OR REPLACE FUNCTION md5(bigint)

RETURNS TEXT AS

$BODY$

DECLARE

n ALIAS FOR $1;

BEGIN

RETURN md5(CAST(n AS TEXT));

END;

$BODY$

LANGUAGE 'plpgsql';

 

 

E por falar em elegância...

 

Galera é só criar a função acima dentro de template1, assim todo banco que for criado herda tudo.

Ahhh vale lembrar que antes a linguagem procedural deve ser instalada:

 

root# createlang -h localhost -U postgres plpgsql template1

 

 

=D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.