FirebirdSQL logo

SUSPEND

Destination

Transfère les valeurs des paramètres dans un tampon et met en pause la procédure (bloc PSQL) jusqu’à ce que l’appelant reçoive le résultat.

Disponible en

PSQL

Syntaxe
SUSPEND;

L’instruction SUSPEND envoie les valeurs des paramètres de sortie dans le tampon et suspend l’exécution de la procédure stockée (bloc PSQL). L’exécution reste suspendue jusqu’à ce que l’appelant reçoive le contenu du tampon. L’exécution reprend avec l’instruction qui suit immédiatement l’instruction SUSPEND. Le plus souvent, il s’agira d’une nouvelle itération du processus itératif.

Note
  1. L’Instruction SUSPEND ne peut apparaître que dans les procédures ou sous-procédures stockées et dans les blocs anonymes EXECUTE BLOCK.

  2. La présence du mot clé SUSPEND définit une procédure stockée comme une procédure sélectionnable.

  3. Les applications qui utilisent les interfaces API sélectionnent généralement les procédures stockées de manière transparente.

  4. Si une procédure sélectionnable est exécutée à l’aide de EXECUTE PROCEDURE', elle se comporte comme une procédure exécutable. Lorsqu’une instruction `SUSPEND est exécutée dans une telle procédure stockée, cela équivaut à l’exécution d’une instruction EXIT, qui entraîne la fin immédiate de la procédure.

  5. L’instruction SUSPEND' "viole" l’atomicité du bloc dans lequel elle réside. Si une erreur se produit dans la procédure sélective, les Instructions exécutés après le dernier Instruction `SUSPEND seront annulés. Les Instructions exécutés avant la dernière instruction SUSPEND ne seront pas annulés sauf si la transaction est annulée.

Exemples SUSPEND

Example 1. Utilisation de l’Instruction SUSPEND dans une procédure stockée sélective.
CREATE PROCEDURE GEN_100
RETURNS (
  I INTEGER
)
AS
BEGIN
  I = 1;
  WHILE (1=1) DO
  BEGIN
    SUSPEND;
    IF (I=100) THEN
      EXIT;
    I = I + 1;
  END
END
Voir aussi :

EXIT.

EXECUTE STATEMENT

Destination

Exécution d’instructions SQL générées dynamiquement.

Disponible en

PSQL

Syntaxe
<execute_statement> ::=
  EXECUTE STATEMENT <argument>
    [<option> ...]
    [INTO <variables>]

<argument> ::=
    <paramless_stmt>
  | (<paramless_stmt>)
  | (<stmt_with_params>) (<param_values>)

<param_values> ::= <named_values> | <positional_values>

<named_values> ::=
  [EXCESS] paramname := <value_expr>
  [, [EXCESS] paramname := <value_expr> ...]

<positional_values> ::= <value_expr> [, <value_expr> ...]

<option> ::=
    WITH {AUTONOMOUS | COMMON} TRANSACTION
  | WITH CALLER PRIVILEGES
  | AS USER user
  | PASSWORD password
  | ROLE role
  | ON EXTERNAL [DATA SOURCE] <connect_string>

<connection_string> ::=
  Voir. <filespec> = Syntaxe CREATE DATABASE !!

<variables> ::= [:]varname [, [:]varname ...]
Table 1. Paramètres de l’instruction EXECUTE STATEMENT
Paramètre Description

paramless_stmt

Une chaîne littérale ou une variable contenant une requête SQL non paramétrée.

stmt_with_params

Une chaîne littérale ou une variable contenant une requête SQL paramétrée.

paramname

Le nom du paramètre de la requête SQL.

value_expr

Une expression pour obtenir la valeur d’un paramètre de la requête.

user

Nom de l’utilisateur. Peut être une chaîne, CURRENT_USER ou une variable.

password

Mot de passe. Peut être une chaîne ou une variable.

role

Rôle. Peut être une chaîne, `CURRENT_ROLE' ou une variable.

connection_string

Chaîne de connexion à la base de données distante Peut être une chaîne ou une variable.

varname

Variable.

L’instruction EXECUTE STATEMENT prend un paramètre de type chaîne et l’exécute comme s’il s’agissait d’une instruction DSQL. Si l’instruction renvoie des données, celles-ci peuvent être passées à des variables locales à l’aide de l’instruction INTO.

Instructions paramétrés

Vous pouvez utiliser des paramètres dans une instruction DSQL. Les paramètres peuvent être nommés ou positionnels (sans nom). Une valeur doit être attribuée à chaque paramètre.