Le processus de capture des instructions SQL se déroule en deux étapes : définition des valeurs de certaines propriétés et exécution de votre application.
Pendant le processus de capture, vous exécutez votre application après avoir d'abord paramétré la propriété captureMode sur ON. pureQuery crée un fichier répertoriant les instructions SQL, ainsi que les traces de pile. Il s'agit d'un fichier pureQueryXML. Vous pouvez spécifier son extension (.pdqxml ou .xml).
Lorsque vous exécutez votre application d'API non pureQuery avec la propriété captureMode paramétrée sur ON, vous devez exécuter correctement tous les chemins logiques contenant les instructions SQL à exécuter en mode statique. pureQuery capture les instructions SQL uniquement lorsqu'elles sont exécutées avec succès.
Considérations générales
- La méthode Connection.prepareStatement() ne génère par la capture d'instructions SQL.
- Votre application peut ne pas fonctionner correctement lorsqu'elle utilise pureQuery pour exécuter les instructions SQL en mode statique. Utilisez pureQuery
Log lors de la capture d'instructions SQL. Les messages consignés par cet utilitaire permettent de déterminer le niveau de compatibilité de votre application avec les instructions SQL statiques. Pour obtenir une description des situations susceptibles de rendre votre application incompatible avec l'exécution d'instructions SQL en mode statique, voir Situations ou pratiques de codification susceptibles de poser des problèmes lorsque votre application non-pureQuery exécute des instructions SQL en mode statique.
- La capture des instructions SQL que les méthodes annotées pureQuery appellent pour que votre application exécute ces instructions n'est pas recommandée. En procédant ainsi, vous pouvez obtenir des performances inférieures aux performances optimales. De plus, certaines fonctions, telles que le traitement par lots hétérogène, peuvent générer des erreurs SQL.
- pureQuery Runtime ne prend pas en charge l'exécution en mode statique des instructions composées,
à l'exception des instructions composées démarrant BEGIN ATOMIC.
Lorsque vous capturez des instructions composées, pureQuery définit l'attribut isBindable de chaque instruction sur false dans le fichier pureQueryXML. Cet attribut demande à l'utilitaire StaticBinder de définir les accès d'une instruction.
Vous pouvez définir isBindable sur true pour les instructions composées BEGIN
ATOMIC. Si l'utilitaire StaticBinder ne parvient pas à définir les accès de l'instruction, une erreur est consignée.
- pureQuery Runtime ne prend pas en charge la capture des instructions SQL qui
contiennent des caractères hexadécimaux pouvant être mappés vers certains caractères de contrôle XML. Ces caractères sont compris dans la plage de 0x32 (caractères hexadécimaux)
et en dessous.
L'occurrence de ces caractères est rare dans SQL. Les
caractères peuvent apparaître lors de l'utilisation de valeurs littérales de chaîne générées
à partir d'une source non classique. Alors que ces caractères peuvent être capturés,
vous pouvez rencontrer des erreurs au cours du traitement suivant du fichier de capture. Si l'utilisation de telles valeurs littérales dans SQL peut être évitée, vous pouvez utiliser la propriété sqlLiteralSubstitution pour
éviter des erreurs pouvant se produire au cours du traitement du fichier de capture.
La propriété sqlLiteralSubstitution aide pureQuery
Runtime à remplacer toutes les valeurs littérales par des paramètres dans les données SQL capturées.
- Lors de la capture des instructions SQL dans les bases de données DB2, le processus de capture consigne les changements apportés
aux registres spéciaux DB2. Les changements
apportés aux registres spéciaux généralement utilisés et pouvant affecter
les données retournées par l'instruction SQL sont également capturés dans les fichiers pureQueryXML.