Dans SQL, les instructions préparées sont utilisées pour modéliser des requêtes ou des mises à jour similaires. Adobe Experience Platform Query Service prend en charge les instructions préparées à l’aide d’une requête paramétrée. Cela peut optimiser les performances, car vous n’avez plus besoin de réanalyser une requête de manière répétitive.
Lorsque vous utilisez des instructions préparées, les syntaxes suivantes sont prises en charge :
Cette requête SQL enregistre la requête SELECT écrite avec le nom donné comme PLAN_NAME
. Vous pouvez utiliser des variables, telles que $1
au lieu de valeurs réelles. Cette instruction préparée sera enregistrée pendant la session en cours. Veuillez noter que les noms des formules ne sont pas sensibles à la casse.
PREPARE {PLAN_NAME} AS {SELECT_QUERY}
PREPARE test AS SELECT * FROM table WHERE country = $1 AND city = $2;
Cette requête SQL utilise l’instruction préparée qui a été créée précédemment.
EXECUTE {PLAN_NAME}('{PARAMETERS}')
EXECUTE test('canada', 'vancouver');
Cette requête SQL est utilisée pour supprimer l’instruction préparée nommée.
DEALLOCATE {PLAN_NAME}
DEALLOCATE test;
Au départ, vous pouvez disposer d’une requête SQL, telle que ci-dessous :
SELECT * FROM table WHERE id >= 10000 AND id <= 10005;
La requête SQL ci-dessus renvoie la réponse suivante :
identifiant | prénom | nom | date de naissance | adresse e-mail | ville | pays |
---|---|---|---|---|---|---|
10000 | alexander | davis | 15/09/1993 | exemple@exemple.com | Vancouver | Canada |
10001 | antoine | dubois | 14/03/1967 | exemple2@exemple.com | Paris | France |
10002 | kyoko | sakura | 26/11/1999 | exemple3@exemple.com | Tokyo | Japon |
10003 | linus | pettersson | 03/06/1982 | exemple4@exemple.com | Stockholm | Suède |
10004 | aasir | waithaka | 17/12/1976 | exemple5@exemple.com | Nairobi | Kenya |
10005 | fernando | rios | 30/07/2002 | exemple6@exemple.com | Santiago | Chili |
Cette requête SQL peut être paramétrée à l’aide de l’instruction préparée suivante :
PREPARE getIdRange AS SELECT * FROM table WHERE id >= $1 AND id <= $2;
Désormais, l’instruction préparée peut être exécutée à l’aide de l’appel suivant :
EXECUTE getIdRange(10000, 10005);
Lors de l’appel, les résultats sont exactement les mêmes que précédemment :
identifiant | prénom | nom | date de naissance | adresse e-mail | ville | pays |
---|---|---|---|---|---|---|
10000 | alexander | davis | 15/09/1993 | exemple@exemple.com | Vancouver | Canada |
10001 | antoine | dubois | 14/03/1967 | exemple2@exemple.com | Paris | France |
10002 | kyoko | sakura | 26/11/1999 | exemple3@exemple.com | Tokyo | Japon |
10003 | linus | pettersson | 03/06/1982 | exemple4@exemple.com | Stockholm | Suède |
10004 | aasir | waithaka | 17/12/1976 | exemple5@exemple.com | Nairobi | Kenya |
10005 | fernando | rios | 30/07/2002 | exemple6@exemple.com | Santiago | Chili |
Une fois l’instruction préparée terminée, vous pouvez procéder à sa désallocation à l’aide de l’appel suivant :
DEALLOCATE getIdRange;