Escribiendo una función almacenada para MySQL

Submitted by admin on Mon, 07/08/2013 - 15:53

Como necesitaba hacer una consulta como
<code>
SELECT * FROM `locales_target` where CAST(translation AS CHAR(10000) CHARACTER SET utf8) LIKE '%Editar%'
</code>
Tuve que implementar una función para simplificar la consulta además de mejorar la legilibilidad

<code>
DELIMITER $$

CREATE FUNCTION BLOB2TXT (blobfield VARCHAR(255)) RETURNS longtext
DETERMINISTIC
NO SQL
BEGIN
RETURN CAST(blobfield AS CHAR(10000) CHARACTER SET utf8);
END
$$

DELIMITER ;

</code>

Después, la consulta se puede reescribir así

<code>
SELECT * FROM `locales_target` where BLOB2TXT(translation) = 'Editar'
</code>

¿Cómo se almacenan estas funciones?
Simplemente la ejecutas en la consola de MySQL o el PHPMyAdmin. O en el caso de Drupal, usando db_query.

¿Dónde se almacenan estas funciones?
En la tabla proc de la base de datos llamada mysql. Ver imagen adjunta.

Links

http://www.mysqludf.org/
http://www.dotnetfunda.com/forums/thread3256-how-to-write-functions-in-…
http://mysql.rjweb.org/doc.php/charcoll

Etiquetas
Imagen