affectation
Exécution d’un bloc PSQL anonyme.
Syntaxe
EXECUTE BLOCK [(<inparams>)]
[RETURNS (<outparams>)]
<psql-module-body>
<inparams> ::= <param_decl> = ? [, <inparams> ]
<outparams> ::= <param_decl> [, <outparams>]
<param_decl> ::= paramname <type> [NOT NULL] [COLLATE collation]
<type> ::=
<non_array_datatype>
| [TYPE OF] domain
| TYPE OF COLUMN rel.col
<non_array_datatype> ::=
<scalar_datatype> | <blob_datatype>
<scalar_datatype> ::= Voir Syntaxe des types de données scalaires.
<blob_datatype> ::= Voir syntaxe des types de données BLOB.
<psql-routine-body> ::=
Voir syntaxe du corps du module.
Table 1. Paramètres de l’instruction EXECUTE BLOCK
.
Paramètre |
Description |
param_decl |
Une description du paramètre d’entrée ou de sortie. |
paramname |
Nom du paramètre d’entrée ou de sortie de la procédure. Peut contenir jusqu’à 63 caractères. Le nom du paramètre doit être unique parmi les paramètres d’entrée et de sortie de la procédure, ainsi que parmi ses variables locales. |
non_array_datatype |
Type de données SQL à l’exclusion des tableaux. |
collation |
Ordre de tri. |
domain |
Domaine. |
rel |
Le nom d’une table ou d’une vue. |
col |
Le nom de la colonne de la table ou de la vue. |
Exécute un bloc de code PSQL comme s’il s’agissait d’une procédure stockée, éventuellement avec des paramètres d’entrée et de sortie et des variables locales. Cela permet à l’utilisateur d’exécuter PSQL "à la volée" dans un contexte DSQL.
Exemples:
Cet exemple saisit les nombres de 0 à 127 et leurs caractères ASCII correspondants dans la table ASCIITABLE :
EXECUTE BLOCK
AS
DECLARE i INT = 0;
BEGIN
WHILE (i < 128) DO
BEGIN
INSERT INTO AsciiTable VALUES (:i, ascii_char(:i));
i = i + 1;
END
END
L’exemple suivant calcule la moyenne géométrique de deux nombres et la renvoie à l’utilisateur :
EXECUTE BLOCK (
x DOUBLE PRECISION = ?,
y DOUBLE PRECISION = ?)
RETURNS (gmean DOUBLE PRECISION)
AS
BEGIN
gmean = sqrt(x*y);
SUSPEND;
END
Comme ce bloc a des paramètres d’entrée, il doit être préparé à l’avance.Il est alors possible de définir les paramètres et d’exécuter le bloc.La façon dont cela est fait, et si cela peut être fait du tout, dépend du logiciel client.Voir les notes ci-dessous.
Notre dernier exemple prend deux valeurs entières, la plus petite et la plus grande.Pour tous les nombres compris dans l’intervalle le plus petit…le plus grand, le bloc fournit le nombre lui-même, son carré, le cube et la quatrième puissance.
EXECUTE BLOCK (smallest INT = ?, largest INT = ?)
RETURNS (
number INT,
square BIGINT,
cube BIGINT,
fourth BIGINT)
AS
BEGIN
number = smallest;
WHILE (number <= largest) DO
BEGIN
square = number * number;
cube = number * square;
fourth = number * cube;
SUSPEND;
number = number + 1;
END
END
Là encore, la manière dont vous pouvez définir les valeurs des paramètres dépend du logiciel client.