Propriété allowDynamicSQL

Indique si l'application doit être autorisée à exécuter en mode dynamique toute instruction SQL non capturée dans un fichier pureQueryXML ou capturée mais sans définition d'accès.
Cette propriété s'applique uniquement à une application lorsque executionMode est défini sur STATIC.

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

TRUE
L'application exécute les instructions SQL non capturées en mode dynamique. Elle exécute également dans ce mode toute instruction SQL capturée dans un fichier pureQueryXML et l'instruction est configurée sans définition d'accès. pureQuery Runtime détermine si l'accès à une instruction SQL dans un fichier pureQueryXML est défini à partir de l'attribut isBindable. Les valeurs de l'attribut sont TRUE (l'instruction a une définition d'accès) et FALSE (l'instruction n'a pas de définition d'accès).

Il s'agit de la valeur par défaut.

Vous pouvez choisir de ne pas définir allowDynamicSQL sur TRUE si vous voulez que l'application émette des exceptions SQLExceptions pour vous aider à trouver les instructions SQL que vous n'avez pas encore capturées ou qui restent sans définition d'accès.

FALSE
pureQuery émet une exception lorsque les méthodes utilisent une instruction SQL non capturée ou sans définition d'accès. Voici certaines méthodes qui peuvent provoquer une exception pour cette raison :
  • Pour les applications Java :
    • Connection.prepareStatement()
    • Statement.addBatch()
    • Statement.execute()
    • Statement.executeQuery()
    • Statement.executeUpdate()
  • Pour les applications CLI :
    • SQLPrepare()
    • SQLExecute()
    • SQLExecDirect()

Remarque : Si la propriété allowDynamicSQL est définie sur TRUE, les instructions SQL SET définissant des registres spéciaux ou les méthodes de connexion JDBC entraînant la définition de registres spéciaux ne sont pas limités par pureQuery Runtime. Les instructions sont toujours autorisées que l'instruction se trouve ou non dans le fichier pureQueryXML.
Si une instruction SQL est exécutée avec le verrouillage optimiste, elle ne peut pas être exécutée de façon statique. Par conséquent, pureQuery Runtime ne capture pas des instructions qui sont exécutées avec le verrouillage optimiste. Les instructions ne sont pas concernées par les options allowDynamicSQL ou capturedOnly de pureQuery Runtime. Le verrouillage optimiste est activé par les méthodes suivantes :

DB2Connection.prepareDB2OptimisticLockingQuery
DB2Statement.executeDB2OptimisticLockingQuery

Le tableau suivant présente les combinaisons de capturedOnly, executionMode et allowDynamicSQL ainsi que les opérations résultantes :

Tableau 1. Combinaisons capturedOnly, executionMode et allowDynamicSQL et opérations résultantes :
capturedOnly executionMode allowDynamicSQL Instruction SQL correspondante Résultat
TRUE STATIC TRUE OUI isBindable = True : exécution de l'instruction SQL en mode statique

isBindable = False : exécution de l'instruction SQL en mode dynamique

TRUE STATIC/DYNAMIC TRUE/FALSE NO Renvoie une erreur
TRUE STATIC FALSE OUI isBindable = True : exécution de l'instruction SQL en mode statique

isBindable = False : renvoi d'une erreur

TRUE DYNAMIC TRUE/FALSE OUI Exécution de l'instruction SQL
FALSE STATIC TRUE OUI isBindable = True : exécution de l'instruction SQL en mode statique.

isBindable = False : exécution de l'instruction SQL en mode dynamique

FALSE STATIC TRUE NO Exécution de l'instruction SQL en mode dynamique
FALSE STATIC FALSE OUI isBindable = True : exécution de l'instruction SQL en mode statique.

isBindable = False : renvoi d'une erreur

FALSE STATIC FALSE NO Renvoie une erreur
FALSE DYNAMIC TRUE/FALSE YES/NO Exécution de l'instruction SQL

Notes d'utilisation de l'interface CLI DB2 et d'IBM Data Server Driver

Lors de l'utilisation de l'interface CLI DB2 ou d'IBM® Data Server Driver avec pureQuery Runtime, vous pouvez utiliser la propriété pureQuery Runtime comme mot clé de configuration.

Syntaxe de mot clé CLI IBM
allowDynamicSQL = TRUE | FALSE
Syntaxe de configuration d'IBM Data Server Driver
< parameter name="allowDynamicSQL" value="TRUE | FALSE" />
Mot clé de chaîne de connexion équivalent d'IBM Data Server Provider for .NET
N/A

Commentaires