2 votes

équivalent de EXCEPTION WHEN OTHERS dans MySQL

J'essaie de porter un trigger Oracle vers MySQL. Il y a un EXCEPTION WHEN OTHERS dans le déclencheur et alors que j'ai trouvé des déclarations équivalentes pour tout le reste, je n'en trouve pas pour cela. Le déclencheur est quelque chose comme :

IF (yada yada)
    THEN
        BEGIN
            SELECT a
            INTO generic_variable1
            FROM table
            WHERE condition;
            SET generic_variable2 = value1;
     EXCEPTION WHEN OTHERS --this part needs to be replaced by valid MySQL syntax
        SET generic_variable2 = value2;
  END;
END IF;

Comment convertir cette partie en MySQL ?

6voto

Bill Karwin Points 204877

Vous devez comprendre que MySQL dispose d'un langage de procs stockés / trigger très limité par rapport à Oracle. Lors du portage vers MySQL, de nombreux utilisateurs d'Oracle répètent sans cesse : "Je ne peux pas croire que MySQL ne puisse pas faire X !!!!".

Ce qui se rapproche le plus d'EXCEPTION WHEN OTHERS est peut-être DECLARE CONTINUE HANDLER.

Exemple (non testé) :

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @generic_variable2 = 1;

Mais vous déclareriez que avant le bloc de code qui pourrait lancer l'exception, pas après.

Voir http://dev.mysql.com/doc/refman/5.5/en/declare-handler.html pour les documents complets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X