INTO
Transférer les résultats de SELECT
dans des variables.
PSQL
SELECT [...] <column-list> FROM ... [...] [INTO <variable-list>] <variable-list> ::= [:]psqlvar [, [:]psqlvar ...]
En PSQL (procédures stockées, triggers, etc.) les résultats d’une commande SELECT
peuvent être chargés ligne par ligne dans des variables locales (le nombre, l’ordre et les types de variables locales doivent correspondre aux champs SELECT
). Souvent, un tel chargement est le seul moyen de faire quelque chose avec les valeurs de retour.
L’instruction SELECT
simple ne peut être utilisé dans PSQL que s’il ne retourne pas plus d’une chaîne de caractères, c’est-à-dire s’il s’agit d’une requête unique. Pour les requêtes qui retournent plusieurs chaînes de caractères, PSQL suggère d’utiliser l’instruction FOR SELECT.
Important
|
Lorsque la requête ne renvoie aucune donnée (zéro ligne), les valeurs des variables de la liste |
De plus, PSQL prend en charge l’instruction DECLARE CURSOR, qui associe un curseur nommé à une commande SELECT particulière — et ce curseur peut alors être utilisé pour naviguer dans l’ensemble de données retourné.
En PSQL, la clause INTO
doit apparaître à la toute fin de la commande SELECT
.
Important
|
Veuillez noter.
En PSQL, les deux points avant les noms de variables sont facultatifs. |
Exemples
Dans PSQL, vous pouvez attribuer les valeurs de min_amt
, avg_amt
et max_amt
à des variables prédéfinies ou à des paramètres de sortie :
SELECT
MIN(amount),
AVG(CAST(amount AS float)),
MAX(amount)
FROM orders
WHERE artno = 372218
INTO min_amt,
avg_amt,
max_amt;
Dans cette requête, CAST
est utilisé pour calculer correctement la valeur moyenne. Si la valeur n’est pas convertie en float
, la valeur moyenne sera tronquée à la valeur entière la plus proche.
Dans le déclencheur :
SELECT LIST(name, ', ')
FROM persons p
WHERE p.id IN (new.father, new.mother)
INTO new.parentnames;