Podrías probar con un formateador como este
Siempre estarán limitados porque no saben (y no pueden) saber qué funciones definidas por el usuario puede haber definido en su base de datos (o a qué funciones integradas tiene o no tiene acceso).
También podría mirar ANTLR (pero esa sería una solución fuera de línea)