web-dev-qa-db-fra.com

Écrire des paramètres facultatifs dans les procédures stockées dans MySQL?

Je voudrais créer une procédure stockée qui met à jour tous les champs d'une table ou seulement quelques-uns en fonction des paramètres qui lui sont transmis.

Comment créer une procédure stockée qui accepte des paramètres facultatifs?

35
user1573747

Optional Parameters ne sont pas encore pris en charge sur MySQL. Je suggère que vous passiez la valeur null dans votre paramètre et à l'intérieur de votre procédure stockée a une instruction IF.

DELIMITER $$
CREATE PROCEDURE procName
(IN param VARCHAR(25))
BEGIN
   IF param IS NULL THEN 
      -- statements ;
   ELSE commands
      -- statements ;
   END IF;
END$$
DELIMITER ;
46
John Woo

Un cas particulier est lorsque le paramètre ne peut pas être NULL, c'est-à-dire parce que c'est une clé. J'utilise une astuce pour ces cas: je mets le paramètre à -1:

CREATE PROCEDURE procCreate
(IN id_cosa INT(11))
  BEGIN
    IF id_cosa != -1 THEN
      ~~(your code here)~~
    END IF
  END
4
Antonio