Utilisation du support d’instructions préparées - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation du support d’instructions préparées

Le pilote JDBC Amazon Redshift prend en charge les instructions préparées. Vous pouvez utiliser des instructions préparées pour améliorer les performances des requêtes paramétrées qui doivent être exécutées plusieurs fois au cours de la même connexion.

Une instruction préparée est une instruction SQL compilée côté serveur, mais pas exécutée immédiatement. La déclaration compilée est stockée sur le serveur sous forme d' PreparedStatement objet jusqu'à ce que vous fermiez l'objet ou la connexion. Tant que cet objet existe, vous pouvez exécuter l’instruction préparée autant de fois que nécessaire en utilisant différentes valeurs de paramètre, sans avoir à compiler à nouveau l’instruction. Ce surcoût réduit permet à l’ensemble de requêtes d’être exécuté plus rapidement.

Pour plus d’informations sur les instructions préparées, consultez « Utilisation des instructions préparées » dans le didacticiel JDBC Basics d’Oracle.

Vous pouvez préparer une instruction contenant plusieurs requêtes. Par exemple, l’instruction préparée suivante contient deux requêtes INSERT :

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO MyTable VALUES (1, 'abc'); INSERT INTO CompanyTable VALUES (1, 'abc');");

Veillez à ce que ces requêtes ne dépendent pas des résultats d’autres requêtes spécifiées dans la même instruction préparée. Étant donné que les requêtes ne s’exécutent pas pendant l’étape de préparation, les résultats n’ont pas encore été renvoyés et ne sont pas disponibles pour d’autres requêtes dans la même instruction préparée.

Par exemple, l’instruction préparée suivante, qui crée une table puis insère des valeurs dans cette table qui vient d’être créée, n’est pas autorisée :

PreparedStatement pstmt = conn.prepareStatement("CREATE TABLE MyTable(col1 int, col2 varchar); INSERT INTO myTable VALUES (1, 'abc');");

Si vous essayez de préparer cette instruction, le serveur renvoie une erreur indiquant que la table de destination (myTable) n’existe pas encore. La requête CREATE doit être exécutée avant que la requête INSERT puisse être préparée.