tal vez estás haciendo esto más complicado como debería ser. Encontré la siguiente discusión que indica que no necesita DELIMIER
palabra clave:http://forums.mysql.com/read .php?39,130834,248556#msg-248556
<CFQUERY datasource="mysql_jdbc">
DROP FUNCTION IF EXISTS `replace_ci`;
CREATE FUNCTION `replace_ci` ( str TEXT,needle CHAR(255),str_rep CHAR(255))
RETURNS TEXT
DETERMINISTIC
BEGIN
DECLARE return_str TEXT;
SELECT replace(lower(str),lower(needle),str_rep) INTO return_str;
RETURN return_str;
END
</CFQUERY>
No olvide agregar allowMultiQueries=true
a su URL de JDBC:http://www.bennadel.com/blog/1542-MySQL-3-4-com-mysql-jdbc-Driver-And-allowMultiQueries-true.htm