Propriété captureStatementBatchSQL

Indique si les instructions SQL DML que l'application transmet à une méthode Statement.addBatch() doivent être capturées, ceci dans la limite du nombre d'instructions SQL (instructions SELECT exclues) qui a été défini par la propriété maxNonParmSQL.

La propriété captureStatementBatchSQL s'applique uniquement lorsque captureMode prend la valeur ON.

Cette propriété peut posséder les valeurs suivantes :

ON
pureQuery capture les instructions SQL DML que l'application transmet à une méthode Statement.addBatch(). Il s'agit de la valeur par défaut.
OFF
pureQuery ne capture pas les instructions SQL DML que l'application transmet à une méthode Statement.addBatch().
Avertissement : Les instructions SQL DDL transmises à une méthode Statement.addBatch() sont toujours capturées.
Si executionMode prend la valeur STATIC et allowDynamicSQL la valeur FALSE, pureQuery tente d'exécuter en mode statique toutes les instructions SQL que l'application transmet à une méthode Statement.addBatch(). Si executionMode prend la valeur STATIC et allowDynamicSQL la valeur TRUE, toutes les instructions SQL que l'application transmet à une méthode Statement.addBatch() sont exécutées en mode dynamique.

Par conséquent, paramétrez captureStatementBatchSQL sur OFF uniquement si allowDynamicSQL va prendre la valeur TRUE lors de l'exécution de l'application avec la valeur STATIC sélectionnée pour executionMode. Dans cette situation, chaque appel de Statement.addBatch() va s'exécuter en mode dynamique, sans vérification permettant de déterminer si l'instruction apparaît dans le fichier pureQueryXML.

Quand exécuter des instructions SQL par lots en mode statique
Lorsqu'une application comportant des instructions SQL par lots produit des tables avec les mêmes données lors de chaque exécution, cette application peut bénéficier de l'utilisation du SQL statique pour les instructions exécutées par la méthode Statement.addBatch(). Par exemple, l'application pourra établir des correspondances entre codes postaux et villes, ou remplir une table avec les emplacements des magasins relevant d'une chaîne de vente au détail.

Lorsque vous capturez des instructions, paramétrez captureStatementBatchSQL sur ON. Ainsi, pureQuery sauvegardera dans un fichier pureQueryXML toutes les instructions traitées via la méthode Statement.addBatch(), ceci jusqu'à la limite définie par maxNonParmSQL.

Lorsque vous exécutez votre application après définition des accès pour les instructions SQL, paramétrez executionMode sur STATIC et allowDynamicSQL sur FALSE. Chaque fois que votre application demande à exécuter les instructions SQL par lots, pureQuery recherche ces instructions dans le fichier pureQueryXML. Si les instructions apparaissent dans le fichier pureQueryXML et si leurs accès sont définis, pureQuery les exécute. Si les instructions n'apparaissent pas dans le fichier pureQueryXML ou si leurs accès ne sont pas définis, pureQuery émet une exception du fait de la valeur FALSE associée à allowDynamicSQL.

Quand exécuter des instructions SQL par lots en mode dynamique
Une application qui utilise la méthode Statement.addBatch() pour le traitement par lots d'instructions SQL hétérogènes peut exécuter plusieurs centaines d'instructions SQL qu'elle ne réexécutera plus par la suite. Ceci peut être le cas pour des applications qui prennent en compte les entrées utilisateur et construisent des instructions INSERT, UPDATE ou DELETE faisant usage de littéraux SQL pour les valeurs fournies par l'utilisateur.

Le traitement par lots d'instructions SQL hétérogènes est utile pour ce type d'application dans la mesure où il réduit le trafic réseau sans toutefois perdre les passations de commandes nécessaires pour l'exécution des instructions INSERT, UPDATE ou DELETE.

Lorsque vous capturez des instructions pour l'application, paramétrez captureStatementBatchSQL sur OFF. Ainsi, pureQuery ne capturera pas les instructions SQL traitées par la méthode Statement.addBatch(). Aucune de ces instructions ne sera prise en compte au regard de la limite définie pour maxNonParmSQL.

Lorsque vous exécutez votre application après définition des accès pour les autres instructions SQL, paramétrez executionMode sur STATIC et allowDynamicSQL sur TRUE. Quand l'application demande à exécuter les instructions SQL par lots, pureQuery ne recherche pas ces instructions dans le fichier pureQueryXML et celles-ci sont exécutées en mode dynamique.


Commentaires