Instructions préparées
Dans SQL, les instructions préparées sont utilisées pour modéliser des requêtes ou des mises à jour similaires. Adobe Experience Platform prend Query Service 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 d’analyser à nouveau une requête de manière répétitive.
Utilisation d’instructions préparées
Lorsque vous utilisez des instructions préparées, les syntaxes suivantes sont prises en charge :
Préparer une instruction préparée prepare
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.
Format SQL
PREPARE {PLAN_NAME} AS {SELECT_QUERY}
Exemple de code SQL
PREPARE test AS SELECT * FROM table WHERE country = $1 AND city = $2;
Exécuter une instruction préparée execute
Cette requête SQL utilise l’instruction préparée qui a été créée précédemment.
Format SQL
EXECUTE {PLAN_NAME}('{PARAMETERS}')
Exemple de code SQL
EXECUTE test('canada', 'vancouver');
Désallouer une instruction préparée deallocate
Cette requête SQL est utilisée pour supprimer l’instruction préparée nommée.
Format SQL
DEALLOCATE {PLAN_NAME}
Exemple de code SQL
DEALLOCATE test;
Flux d’exemples d’utilisation d’instructions préparées
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 :
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 :
Une fois l’instruction préparée terminée, vous pouvez procéder à sa désallocation à l’aide de l’appel suivant :
DEALLOCATE getIdRange;