sexta-feira, 23 de maio de 2008

Ahh.... pega o saco preto pro MySQL

O MySQL sempre foi um banco de dados razoavelmente flexivel pra mim. Até uns 5 minutos atrás, isso era uma verdade plena. Estava eu desenvolvendo uma procedure dinâmica, que de acordo com os parâmetros fornecidos, ela monta um update.

Até que a procedure era simples, menos de 100 linhas, nada de cursor, chamada de outras procedures ou recursividade. Acontece que ele criava a procedure sem problema algum, eu passava todos os parâmetros certos e ele não estourava excessão mas também não realizava o update.

And now, are you scared ?

Bom, depois de muito futucar, decidi ver uma coisa boba. Boba não, completamente ridícula. Havia um coalesce na procedure ( função que checa se o primeiro parâmetro é nulo, caso sim, retorna o segundo ). A sintaxe é parecida com o seguinte:

set a = colalesce(b,c);


Acontece que eu coloquei um inocente espaço entre a função e o parênteses. Isso virou um tormento na minha vida. Esse simples fato, fez com que eu recebesse a seguinte mensagem via prompt :

FUNCTION BD1.COALESCE does not exist

Mas não é uma gracinha ? Se isso fosse um padrão no MySQL, eu nem reclamava. Mas já cansei de dar esses moles e nunca tive problemas. Vai entender...


Nenhum comentário: