Generación de funciones en MySQL
La función se crea igual en desarrollo y producción salvo por un peqeño detalle.
El usuario que usamos como definidor (CREATE DEFINER) debe de ser el que tiene permisos en esa BBDD. Es decir, en el caso de desarrollo es root@servidor_MySQL y en producción será nombre_usuario@servidor_MySQL.
Por otro lado necesitamos que el separador (en la pantalla de ejecución de SQL) sea en vez de ;.
Ejemplo de función de MySQL:
DELIMITER $$
CREATE DEFINER=root@localhost FUNCTION concat_of_node(v_nodeID integer, v_separador TEXT) RETURNS text CHARSET utf8
READS SQL DATA
BEGIN
DECLARE v_text text;
DECLARE v_texto_temp text;
DECLARE v_parentNodeID int;
DECLARE v_currentNode int;
DECLARE v_parentNode int;
declare v_The_End BOOL default FALSE;
declare continue handler for not found set v_The_End := TRUE;
SET v_currentNode = v_nodeID;
SET v_text = ;
WHILE (v_The_End = false) DO
SELECT tblcfgfamcomerciales.famIDPadre, famTitulo_es into v_parentNode, v_texto_temp
FROM tblcfgfamcomerciales
WHERE tblcfgfamcomerciales.famId = v_currentNode;
SET v_currentNode = v_parentNode;
IF (v_The_End = false) THEN
IF (v_text = ) THEN
SET v_text = v_texto_temp;
ELSEIF (v_texto_temp <> '') THEN
SET v_text = CONCAT(v_texto_temp,v_separador,v_text);
END IF;
END IF;
end while;
return v_text;
END