FirebirdSQL logo

LEAVE

Destination

Sortir du cycle.

Disponible en

PSQL

Syntaxe
[label:]
<loop_stmt>
BEGIN
  ...
  LEAVE [label];
  ...
END

<loop_stmt> ::=
    FOR <select_stmt> INTO <var_list>  DO
  | FOR EXECUTE STATEMENT ... INTO <var_list> DO
  | WHILE (<condition>) DO
Table 1. Paramètres de l’instruction LEAVE
Paramètre Description

label

Étiquette.

select_stmt

Instruction SELECT.

condition

Une condition logique renvoyant VRAI, FAUX ou INCONNU.

L’instruction LEAVE termine immédiatement la boucle interne des instructions WHILE ou FOR. En utilisant le paramètre optionnel label, LEAVE peut également quitter la boucle externe, c’est-à-dire la boucle marquée par `. Le code continue à s’exécuter à partir de la première instruction après le bloc de boucle terminé.

Exemples LEAVE

Example 1. Utilisation de l’Instruction LEAVE

Dans cet exemple, la boucle est quittée lorsqu’une erreur d’insertion se produit dans la table NUMBERS. Le code continuera son exécution à partir de l’instruction C = 0.

...
WHILE (B < 10) DO
BEGIN
    INSERT INTO NUMBERS(B)
    VALUES (:B);
    B = B + 1;
    WHEN ANY DO
    BEGIN
        EXECUTE PROCEDURE LOG_ERROR (
             CURRENT_TIMESTAMP,
             'ERROR IN B LOOP');
        LEAVE;
    END
END
C = 0;
...
Example 2. Utilisation de l’Instruction LEAVE avec la balise

Dans cet exemple, l’Instruction LEAVE LOOPA termine la boucle extérieure et LEAVE LOOPB termine la boucle intérieure.

Remarque : Un simple Instruction LEAVE serait également suffisant pour mettre fin à la boucle interne.

...
STMT1 = 'SELECT NAME FROM FARMS';
LOOPA:
FOR EXECUTE STATEMENT :STMT1
INTO :FARM DO
BEGIN
  STMT2 = 'SELECT NAME ' || 'FROM ANIMALS WHERE FARM = ''';
  LOOPB:
  FOR EXECUTE STATEMENT :STMT2 || :FARM || ''''
  INTO :ANIMAL DO
  BEGIN
    IF (ANIMAL = 'FLUFFY') THEN
      LEAVE LOOPB;
    ELSE IF (ANIMAL = FARM) THEN
      LEAVE LOOPA;
    ELSE
      SUSPEND;
  END
END
...
Voir aussi :

BREAK, EXIT, CONTINUE.