raise_application_error es de Oracle, no de MySQL.
El manejo de excepciones personalizadas en MySQL es distinto.
Ver manual de referencia:
http://dev.mysql.com/doc/refman/5.5/en/signal.html
Por otro lado, si un valor X se ingresará por formulario, lo que corresponde es que lo valides en el formulario, no en la base de datos.
Mandar basura a confirar en la base es desperdiciar capacidades y consumir recursos de servicios inútilmente. No es programar de modo eficiente.
Cada cosa tiene su ambiente de mejor uso, y validar longitudes de textos es de JavaScript, no SQL...