Les fonctions ont par définition une valeur de retour. Leur déclaration doit se terminer par le mot-clé RETURNS (remarquez le S) suivi du type de la valeur de retour.
Le code de la fonction quant à lui doit contenir la commande RETURN (cette fois, pas de S) suivie de la valeur de retour.
Attention : si la valeur de retour est une valeur tirée d’une commande SELECT, la commande SELECT sera entre parenthèses.
Dans cet exemple, on calcule le salaire horaire d'un mécanicien en tenant compte qu'un mécanicien travaille 2000 heures par année.
Ex :
CREATE FUNCTION salaire_horaire(p_id INT) RETURNS DECIMAL(5,2) READS SQL DATA
BEGIN
-- (entête standard)
DECLARE salaire DECIMAL(5,2);
SELECT salaire/2000 INTO salaire FROM mecaniciens WHERE id = p_id;
RETURN salaire;
END!!
ou
CREATE FUNCTION salaire_horaire(p_id INT) RETURNS DECIMAL(5,2) READS SQL DATA
BEGIN
-- (entête standard)
RETURN (SELECT salaire/2000 FROM mecaniciens WHERE id = p_id);
END!!
Il est possible d'appeler la fonction stockée en lui passant une seule valeur en paramètre. Dans cet exemple, on affichera le salaire du mécanicien numéro 2 :
Ex : SELECT salaire_horaire(2);
Il est également possible de travailler avec une série de valeurs tirées d'une table. On pourra alors passer le nom d'un champ comme paramètre.
Dans cet exemple, la fonction stockée sera exécutée plusieurs fois, une fois pour chacun des enregistrements de la table :
Ex : SELECT salaire_horaire(id) FROM mecaniciens;
▼Publicité