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 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.
Utilisation d’instructions préparées
Lorsque vous utilisez des instructions préparées, les syntaxes suivantes sont prises en charge :
Préparation d’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écution d’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ésallocation d’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;