Me ha costado un rato largo, acostumbrado a escribir para MS-SQLServer, adaptarme a escribir para MySQL. La criatura y unos comentarios a continuación.
DROP FUNCTION IF EXISTS `degramm`.`f_EtiquetaPalabra` $$ CREATE FUNCTION `degramm`.`f_EtiquetaPalabra` (Etiqueta int, Palabra int) RETURNS TINYINT BEGIN DECLARE yon TINYINT; SELECT count(*) INTO @yon FROM t_etiquetapalabra WHERE idEtiqueta=Etiqueta AND idPalabra=Palabra; RETURN @yon; END $$
Si llega a tener más líneas, me jubilo antes de conseguirlo.
Me llama la atención que las variables declaradas por el programador sí se precedan con la arroba, y por contra los parámetros no necesiten la arroba.
Me llama la atención que durante todo el tiempo que escribí los parámetros con arroba, los consideraba variables sin inicializar (NULL) en vez de arrojarme un error.
Curioso el «SELECT col INTO var FROM …» en vez de «SELECT var = col FROM …»
El poder usar un «IF» lo dejo para otro milenio en que la suerte me sonría más.