sábado, 16 de janeiro de 2010

Criando função Mysql

Vou ensinar agora como criar uma função no MySQL para decodificar algo que use uma criptogração de "um disco criptográfico", não sei o nome correto, é aquela em que cada letra ou grupo de letras tem apenas um significado... Criptografia por Substituição talvez seja, não achei o nome ainda...
Neste exemplo a criptografia é apenas de números para letras, cada letra vale sua posição no alfabeto, ou seja, A=1, B=2, C=3, D=4, E=5, e assim por diante
CREATE FUNCTION Funcao01 (s CHAR(1))
RETURNS TINYINT
RETURN IF(s="A",0,IF(s="B",1,IF(s="C",2,
IF(s="D",3,IF(s="E",4,IF(s="F",5,IF(s="G",6,
IF(s="H",7,IF(s="I",8,IF(s="J",9,0))))))))));
Uma funcão simples e ridícula....
Para rodar basta chamar como uma função qualquer...
SELECT Funcao01("G");
Agora explicando, você tem de definir o tipo de cada variável que for entrar, no caso s é do tipo CHAR(1) com tamanho 1, e a saída - o retorno da função vai ser do tipo TINYINT...
A função IF é simples, IF(condição,true,false)...

Uma informação importante, eu testei aqui o código e estava dando erro no MySQL ao criar a função:
ERROR 1307 (HY000): Failed to CREATE FUNCTION Funcao01
A solução foi rodar o mysql_upgrade.exe para atualizar os bancos de dados que eram de uma versão anterior do MySQL... (Se bobear era do MySQL 4.0, :P)
mysql_upgrade.exe -u root -p
Digite a senha do root, e espere ele terminar...

Nenhum comentário: