FirebirdSQL logo

Écrire le code du corps du module

Cette section examine en détail les constructions procédurales SQL et les Instructions disponibles dans le corps des procédures stockées, des déclencheurs et des blocs PSQL anonymes.

Мarqueur deux-points (‘:’)

Un marqueur deux-points (‘`:`’) est utilisé dans PSQL pour marquer une référence à une variable dans une instruction DML. Sinon, un marqueur deux-points est facultatif devant les noms de variables.

Ne jamais préfixer un deux-points pour les variables de contexte.

Instruction d’assignation

Destination

Attribution d’une valeur à une variable.

Disponible en

PSQL

Syntaxe
varname = <value_expr>;
Table 1. Paramètres de l’instruction affectations
Paramètre Description

varname

Le nom d’une variable locale ou d’un paramètre de procédure (fonction).

value_expr

Une expression, une constante ou une variable dont le type de données est compatible avec varname.

PSQL utilise le signe égal (‘`=`’) comme Instruction d’affectation. L’Instruction d’affectation définit la variable à gauche de l’Instruction à la valeur de l’expression SQL à droite. Une expression peut être n’importe quelle expression SQL valide. Elle peut contenir des littéraux, des noms de variables internes, des opérations arithmétiques, logiques et de chaînes de caractères, des appels à des fonctions intégrées et des fonctions définies par l’utilisateur.

Example 1. Utilisation d’un Instruction d’affectation
CREATE PROCEDURE MYPROC (
    a INTEGER,
    b INTEGER,
    name VARCHAR (30)
)
RETURNS (
    c INTEGER,
    str VARCHAR(100))
AS
BEGIN
  -- nous attribuons une constante
  c = 0;
  str = '';
  SUSPEND;
  -- attribuer des valeurs aux expressions
  c = a + b;
  str = name || CAST(b AS VARCHAR(10));
  SUSPEND;
  -- assigne la valeur de l'expression
  -- construite à l'aide de la requête
  c = (SELECT 1 FROM rdb$database);
  -- assigner une valeur à partir d'une variable contextuelle
  str = CURRENT_USER;
  SUSPEND;
END
Voir aussi :

DECLARE VARIABLE.

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.