bastante bien logrado para ser el primer intento...
Ahora bien hay algunas cosas que debes tner en cuenta:
1) No conviene usar comillas (") para las cadenas de texto, porque no todas las instalaciones de MySQL te lo tomarán bien. Normalmente y por default las comillas se usan como delimitadores de nombres de objetos de base de datos y no para cadenas. Es más seguro usar apóstrofos ('), que
siempre son para cadenas.
2)
NUNCA uses la base "mysql" para pruebas. Esa base es propia de la adminsitracion de MySQL, y no deben crearse tablas, procedimietnos ni ningun objeto en ella. Sólo la usa internamente el MySQL para si mismo.
3) No tiene sentido buscar la condición de ELSE para decir que algo no es un mes. Siendo el parámetro de entrada un DATE, si no es una fecha de formato válido se dispara un error de MySQL de tipo de dato incorrecto y el procedimiento
no se ejecuta. Así de sencillo.
4) Trata de no complicar la lógica. Lee con cuidado los tipos de funciones que existen y que son muy variados en MySQL. Las hasy mejores y más simples para hacer lo que quieres.
Yo probaría esto, a ver si funciona bien:
Código MySQL:
Ver original
delimiter $$
SET NombreDia
= ELT(DAYOFWEEK(campofecha
), 'Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sabado'); SET nombreMes
= ELT(MONTH(campofecha
), 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
CALL fechas
('2014-11-27');
DAYOFWEEK(): http://dev.mysql.com/doc/refman/5.6/...tion_dayofweek ELT():
http://dev.mysql.com/doc/refman/5.6/...l#function_elt