Les caractéristiques que vous définissez sont ajoutées dans votre fichier pureQueryXML. Lorsque vous exécutez l'utilitaire StaticBinder pour lier les instructions SQL d'un fichier pureQueryXML dans des packages DB2, l'utilitaire StaticBinder lit ces caractéristiques. pureQuery Runtime utilise également des informations du fichier, telles que l'ID collection, l'ID package, l'ID version et le numéro de section lors de l'exécution d'instructions SQL en mode statique.
Cette rubrique contient les sections suivantes :
Pour comprendre les conventions utilisées dans les diagrammes, voir Lecture des diagrammes de syntaxe.
Le fichier d'options de l'utilitaire Configure répertorie le(s) fichier(s) pureQueryXML que l'utilitaire pureQuery Configure doit traiter, ainsi que les options indiquant aux utilitaires comment traiter les fichiers pureQueryXML. Vous pouvez définir les options par défaut applicables à tous les fichiers pureQueryXML répertoriés dans un fichier d'options. Vous pouvez également définir des options d'interfaces afin de remplacer les options par défaut et d'en définir d'autres spécifiques aux fichiers pureQueryXML individuels.
Dans la commande d'exécution de l'utilitaire Configure, vous pouvez indiquer le fichier à utiliser avec l'option -optionsFile.
defaultOptions = -collection COLL01 C:\capture_files\capture_sales.pdqxml = -collection NULLID -rootPkgName SALES C:\capture_files\capture_employee.pdqxml = -collection COLL02 -rootPkgName EMP C:\capture_files\capture_orders.pdqxml = -rootPkgName ORDERSDans cet exemple, la ligne commençant par defaultOptions indique l'ID de collecte des packages DB2 qui seront créés et dont les accès seront définis. Les deux lignes suivantes suppriment l'ID de collecte par défaut. Pour les trois fichiers pureQueryXML, l'option obligatoire -rootPkgName indique le nom de package racine des packages DB2.
-pkgVersion "ver#1"
Si vous disposez d'un seul fichier pureQueryXML, vous pouvez utiliser cette commande afin de spécifier son nom et les options du package DB2.
(1) >>-java--com.ibm.pdq.tools.Configure----------------------------> >--+----------------------------------+-------------------------> | .-NULLID---------. | '- -collection--+-nom_collection-+-' >--+-----------------------------+------------------------------> '- -markDDLForBind--+-TRUE--+-' '-FALSE-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-ID_version-' >-- -rootPkgName--racine_nom_package----------------------------> >--+--------------------------------------------------------+---> '- -allowStaticRowsetCursors--+-READ_ONLY--------------+-' +-READ_ONLY_SCROLLABLE---+ +-READ_ONLY_FORWARD_ONLY-+ '-NEVER------------------' >--+-----------------------------+------------------------------> | .-FALSE-. | '- -cleanConfigure--+-TRUE--+-' >--+--------------------------+---------------------------------> | .-FALSE-. | '- -showDetails--+-TRUE--+-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+------------------------+-----------------------------------> | .-100----. | '- -sqlLimit--+-nombre-+-' >--+---------------------------------------+--------------------> '- -removeSQLInactiveForDays----jours---' >--+---------------------------------------+--------------------> '- -setPreStatusOfAllPkgs--+-AUTO-----+-' +-FINAL----+ '-REQUIRED-' >--+---------------------------------+--------------------------> '- -setPostStatusOfAllPkgs--FINAL-' >--+-----------------------------------------+------------------> | .-FALSE-. | '- -groupSQLBySpecialRegisters--+-TRUE--+-' >--+-------------------------------------------+----------------> | .------------------. | | | .-|------. | | | V V | | | '- -groupSQLByStrings----(----chaîne-+--)-+-' >--+-------------------------------------------------------------+--> '- -optionsFileForBind--+-fichier-options-liaison-----------+-' '-DEFAULT_IN_PUREQUERYXML_DIRECTORY-' >--+--------------------------+--+--------------------------+---> | .-FALSE-. | | (2) | '- -validateXml--+-TRUE--+-' '-| Options de trace |-----' >-- -pureQueryXml--fichier_pureQueryXML--+--------+------------>< '- -help-'
Si vous disposez de plusieurs fichiers pureQueryXML, utilisez la commande et un fichier d'options pour spécifier leurs noms et les options des packages DB2. Vous pouvez utiliser la commande et un fichier d'options même si vous ne disposez que d'un seul fichier pureQueryXML.
>>-java--com.ibm.pdq.tools.Configure----------------------------> >-- -optionsFile--nom_fichier--+--------------------------+---->< | (1) | '-| Options de trace |-----'
Ce diagramme de syntaxe affiche les options par défaut que vous pouvez définir pour tous les fichiers pureQueryXML figurant dans un fichier d'options.
(1) >>-defaultOptions--=--------------------------------------------> >--+----------------------------------+-------------------------> | .-NULLID---------. | '- -collection--+-nom_collection-+-' >--+-----------------------------+------------------------------> '- -markDDLForBind--+-TRUE--+-' '-FALSE-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-ID_version-' >--+--------------------------------------------------------+---> '- -allowStaticRowsetCursors--+-READ_ONLY--------------+-' +-READ_ONLY_SCROLLABLE---+ +-READ_ONLY_FORWARD_ONLY-+ '-NEVER------------------' >--+--------------------------+---------------------------------> | .-FALSE-. | '- -showDetails--+-TRUE--+-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+------------------------+-----------------------------------> | .-100----. | '- -sqlLimit--+-nombre-+-' >--+---------------------------------------+--------------------> '- -removeSQLInactiveForDays----jours---' >--+---------------------------------------+--------------------> '- -setPreStatusOfAllPkgs--+-AUTO-----+-' +-FINAL----+ '-REQUIRED-' >--+---------------------------------+--------------------------> '- -setPostStatusOfAllPkgs--FINAL-' >--+-----------------------------------------+------------------> | .-FALSE-. | '- -groupSQLBySpecialRegisters--+-TRUE--+-' >--+-------------------------------------------+----------------> | .------------------. | | | .-|------. | | | V V | | | '- -groupSQLByStrings----(----chaîne-+--)-+-' >--+-------------------------------------------------------------+--> '- -optionsFileForBind--+-fichier-options-liaison-----------+-' '-DEFAULT_IN_PUREQUERYXML_DIRECTORY-' >--+--------------------------+--+--------------------------+-->< | .-FALSE-. | | (2) | '- -validateXml--+-TRUE--+-' '-| Options de trace |-----'
Ce diagramme de syntaxe affiche les options que vous pouvez définir pour chaque fichier pureQueryXML figurant dans un fichier d'options.
(1) >>-fichier_pureQueryXML--=--------------------------------------> >--+----------------------------------+-------------------------> | .-NULLID---------. | '- -collection--+-nom_collection-+-' >--+-----------------------------+------------------------------> '- -markDDLForBind--+-TRUE--+-' '-FALSE-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-ID_version-' >-- -rootPkgName--racine_nom_package----------------------------> >--+--------------------------------------------------------+---> '- -allowStaticRowsetCursors--+-READ_ONLY--------------+-' +-READ_ONLY_SCROLLABLE---+ +-READ_ONLY_FORWARD_ONLY-+ '-NEVER------------------' >--+-----------------------------+------------------------------> | .-FALSE-. | '- -cleanConfigure--+-TRUE--+-' >--+--------------------------+---------------------------------> | .-FALSE-. | '- -showDetails--+-TRUE--+-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+------------------------+-----------------------------------> | .-100----. | '- -sqlLimit--+-nombre-+-' >--+---------------------------------------+--------------------> '- -removeSQLInactiveForDays----jours---' >--+---------------------------------------+--------------------> '- -setPreStatusOfAllPkgs--+-AUTO-----+-' +-FINAL----+ '-REQUIRED-' >--+---------------------------------+--------------------------> '- -setPostStatusOfAllPkgs--FINAL-' >--+-----------------------------------------+------------------> | .-FALSE-. | '- -groupSQLBySpecialRegisters--+-TRUE--+-' >--+-------------------------------------------+----------------> | .------------------. | | | .-|------. | | | V V | | | '- -groupSQLByStrings----(----chaîne-+--)-+-' >--+--------------------------+-------------------------------->< | .-FALSE-. | '- -validateXml--+-TRUE--+-'
Seul DB2 for z/OS prend en charge les curseurs d'ensemble de lignes. Les curseurs d'ensemble de lignes sont utilisés uniquement quand les propriétés IBM Data Server Driver for JDBC and SQLJ le requièrent. Si vous effectuez la capture depuis un type de données source différent, ou sans activer les curseurs d'ensemble de lignes, aucune des instructions capturées n'utilise de curseur d'ensemble de lignes.
Lorsque les curseurs d'ensemble de lignes ne sont pas utilisés pour les curseurs de défilement vers l'avant, une connexion de Type 4 peut utiliser de façon interne un mécanisme similaire pour atténuer le trafic réseau.
Cette option prend l'une des quatre valeurs suivantes :
Cette option n'est pas nécessaire si l'une de ces conditions est remplie :
pureQuery considère qu'une instruction est actualisable si l'une de ces conditions est vraie :
Si vous exécutez des instructions de façon statique sur une source de données qui ne prend pas en charge les curseurs d'ensemble de ligne, le curseur de ligne n'est utilisé par pureQuery pour aucune instruction.
Si vous n'indiquez pas cette option, pureQuery utilise par défaut les curseurs d'ensemble de lignes pour les instructions pour lesquelles le pilote IBM Data Server Driver for JDBC and SQLJ a utilisé des curseurs d'ensemble de lignes lors de la capture des instructions.
Pour tous les ensembles d'instructions, l'utilitaire Configure associe l'attribut configureStatus à la valeur AUTO pendant la procédure de configuration. Remplace la valeur FINAL pour l'attribut configureStatut de l'ensemble d'instructions.
FALSE est la valeur par défaut.
Pour les ensembles d'instructions sans nom, la configuration applique toutes les options spécifiées.
Pour les ensembles d'instructions nommés dont l'attribut configureStatus correspond à REQUIRED, certaines options sont appliquées. Les options appliquées comprennent les options -collection, -pkgVersion , -forceSingleBindIsolation et -markDDLForBind. La marque de cohérence est mise à jour. Si vous exécutez des instructions SQL dans l'ensemble d'instructions en mode statique, vous devez relier le package créé à partir de l'ensemble d'instructions.
Pendant la procédure de configuration, l'utilitaire Configure remplace la valeur REQUIRED de configureStatus par AUTO.
Pour les ensembles d'instructions dont l'attribut configureStatus a pour valeur AUTO, l'utilitaire Configure applique les options uniquement s'il détermine que l'ensemble d'instructions doit être modifié. La marque de cohérence n'est pas mise à jour si l'ensemble d'instructions n'est pas modifié. Lorsque l'attribut configureStatus correspond à AUTO et que l'option -pkgVersion est indiquée, l'utilitaire met à jour l'ensemble d'instructions en utilisant l'ID version. Si vous exécutez des instructions SQL de l'ensemble d'instructions de manière statique et que l'ensemble d'instructions a été modifié, vous devez lier une nouvelle fois le package créé à partir de l'ensemble d'instructions.
Pour les ensembles d'instructions nommés dont l'attribut configureStatus correspond à FINAL, l'utilitaire Configure affiche des erreurs lorsque des problèmes liés à l'ensemble d'instructions sont détectés. Les erreurs comprennent des numéros de section en ordre décroissant et des instructions de mise à jour de position non associées à une instruction SELECT. L'utilitaire Configure affiche des avertissements lorsque les instructions doivent être supprimées d'un ensemble d'instructions. Par exemple, une instruction peut être supprimée d'un ensemble d'instructions lorsque l'option -removeSQLInactiveForDays est spécifiée et que l'horodatage de l'instruction correspond aux critères de suppression. Une instruction peut être déplacée vers un autre ensemble d'instructions si les valeurs de registre spécial sont associées aux modifications de l'instruction.
Si vous souhaitez utiliser l'option -isolationLevel pour définir les accès d'un seul ensemble d'instructions en deux ou trois packages différents (chaque package à un autre niveau d'isolement), n'utilisez pas l'option -forceSingleBindIsolation lorsque vous exécutez l'utilitaire Configure sur le fichier pureQueryXML dans lequel apparaît l'ensemble d'instructions.
Par exemple, dans un fichier d'options pour l'utilitaire StaticBinder, supposez que vous avez inclus les deux entrées suivantes :
C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel UR C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel CS
Si vous avez utilisé l'option -forceSingleBindIsolation lors de l'exécution de l'utilitaire Configure sur le fichier captureFile.pdqxml, l'utilitaire StaticBinder effectue les actions suivantes :
Le résultat est un package MYPKGA unique dont les accès sont définis au niveau d'isolement CS.
Si vous voulez avoir deux packages MYPKGA comme résultat, un au niveau d'isolement UR et l'autre au niveau CS, n'utilisez pas l'option -forceSingleBindIsolation lors de l'exécution de l'utilitaire Configure sur captureFile.pdqxml.
Lorsque les deux options -groupSQLBySpecialRegisters et -groupSQLByStrings sont utilisées pour créer des ensembles d'instructions, les instructions sont d'abord regroupées en fonction des valeurs des registres spéciaux. Pour chaque groupe basé sur des registres spéciaux, les instructions SQL sont regroupées en fonction des valeurs indiquées par l'option -groupSQLByStrings. Une fois le regroupement terminé, le regroupement basé sur l'option -sqlLimit est effectué, si nécessaire. Une fois les ensembles d'instructions créés, ils sont nommés.
Si le fichier pureQueryXML contient une combinaison de packages nommés et non nommés et que l'option -cleanConfigure a pour valeur FALSE, seuls les packages non nommés sont regroupés et le regroupement des packages nommés reste inchangé. Si l'option -cleanConfigure a pour valeur TRUE, les instructions SQL de tous les packages, nommés ou non, sont regroupées.
Si vous exécutez les instructions SQL en mode statique, vous pouvez utiliser les options -groupSQLBySpecialRegisters et -optionsFileForBind pour vous aider à lier les packages à une base de données DB2.
Pour plus d'informations sur les données du registre spécial enregistrées par pureQuery Runtime, reportez-vous aux liens connexes à la fin de cette rubrique.
Les chaînes entre parenthèses sont utilisées pour rechercher et regrouper les instructions SQL dans un ensemble d'instructions. Plusieurs chaînes peuvent être utilisées pour affecter une instruction SQL à un ensemble d'instructions en séparant les chaînes par une barre verticale ( | ). Un avertissement est consigné si la même chaîne apparaît plusieurs fois ou si une chaîne est une sous-chaîne d'une autre chaîne.
Une instruction SQL est affectée à un ensemble d'instructions si elle contient la chaîne. Si plusieurs chaînes sont utilisées pour créer un ensemble d'instructions, l'instruction SQL est affectée à l'ensemble d'instructions si elle contient l'une des chaînes.
Lorsque les options -groupSQLBySpecialRegisters et -groupSQLByStrings sont utilisées pour créer des ensembles d'instructions, les instructions sont d'abord regroupées en fonction des valeurs des registres spéciaux. Dans chaque groupe utilisant des registres spéciaux, les instructions SQL sont regroupées en fonction des valeurs indiquées par l'option -groupSQLByStrings. Une fois le regroupement terminé, l'option -sqlLimit est appliquée si nécessaire et les ensembles d'instructions créés sont nommés.
Si le fichier pureQueryXML contient une combinaison de packages nommés et non nommés et que l'option -cleanConfigure est définie sur FALSE, seuls les packages non nommés sont regroupés et le regroupement des packages nommés reste inchangé. Si l'option -cleanConfigure est définie sur TRUE, les instructions SQL dans tous les packages, nommés ou non, sont regroupées.
Pour obtenir des exemples de regroupement des instructions SQL par chaîne, voir Exemples.
Les valeurs correctes sont les chaînes TRUE et FALSE (non sensibles à la casse). Il n'y a pas de valeur par défaut.
Si vous n'utilisez pas cette option, l'utilitaire Configure vérifie si l'option isBindable est TRUE pour l'une des instructions DDL se trouvant dans des ensembles d'instructions sans nom dans le fichier pureQueryXML. Si l'option isBindable est TRUE pour au moins l'une de ces instructions DDL, lorsque l'utilitaire Configure regroupe les instructions DDL dans un ensemble d'instructions DDL unique et nommé, l'utilitaire définit l'attribut isBindable sur TRUE pour l'ensemble d'instructions DDL.
Lorsque l'utilitaire StaticBinder détecte la valeur TRUE pour l'attribut isBindable des ensembles d'instructions, il tente de lier les instructions dont l'attribut isBindable a pour valeur TRUE dans cet ensemble.
Si cette valeur est indiquée sur la ligne defaultOptions d'un fichier d'options de l'utilitaire Configure, tous les fichiers pureQueryXML indiqués dans le fichier doivent être stockés dans le même répertoire.
Les options de liaison et les autres informations du fichier vous aident à indiquer un ensemble d'options de liaison pour exécuter une instruction SQL en mode statique en obtenant un comportement comparable à celui obtenu avec une exécution dynamique lancée à partir de l'application. Vous pouvez utiliser les options de liaison avec l'utilitaire pureQuery StaticBinder pour créer des packages dans une base de données DB2 et lier les packages à la base de données.
L'utilitaire Configure ajoute des commentaires avec des informations sur les ensembles d'instructions et les ensembles de valeurs des registres spéciaux référencés dans le fichier.
L'utilitaire Configure ajoute l'option -configureWarning de l'utilitaire StaticBinder avec des avertissements. Les avertissements indiquent pourquoi les instructions SQL risquent de ne pas se comporter comme prévu lors de leur exécution en mode statique, une fois que les packages sont liés à la base de données à partir de l'ensemble d'instructions.
Pour plus d'informations sur le fichier d'options StaticBinder créé par l'utilitaire Configure et les données du registre spécial enregistrées lors de la capture des instructions SQL, reportez-vous aux liens connexes à la fin de cette rubrique.
DB2 accepte la présence simultanée de plusieurs versions d'un même package, ce qui vous permet de définir les accès des nouveaux packages sans devoir remplacer les anciennes versions des packages portant un nom identique. Si vous rencontrez des difficultés avec une version récente d'un package, vous pouvez toujours utiliser une version plus ancienne de ce package.
L'utilitaire de configuration crée une copie du fichier pureQueryXML en ajoutant l'ID version au nom de ce fichier.
L'ID version ne doit inclure que des caractères valides pour les noms de fichier sur votre système d'exploitation. Par ailleurs, la chaîne et le nom du package ne peuvent pas dépasser la longueur acceptée par votre système d'exploitation pour les noms de fichier.
Si vous indiquez cette option et que l'utilitaire de configuration ne modifie pas le fichier pureQueryXML, l'utilitaire ne crée pas de copie du fichier pureQueryXML.
Si vous n'indiquez pas cette option, les packages de base de données provenant de liaisons ultérieures sont créés sans version et la copie du fichier n'est pas créée.
La vérification de la version au moment de l'exécution est basée sur la marque de cohérence, et non pas sur le nom de la version.
Par exemple, si la variable jours est définie sur 5 et que nous sommes le 25 novembre, les instructions SQL datées du 20 novembre et antérieures au 20 novembre ne sont pas écrites.
L'horodatage est mis à jour lorsque pureQuery Runtime capture l'instruction SQL.
Si l'instruction SQL n'est pas horodatée, elle est écrite dans le fichier de sortie. Par exemple, un fichier pureQueryXML d'une version antérieure risque de ne pas avoir d'horodatage. Si vous configurez un fichier pureQueryXML qui ne possède pas d'horodatage (version 3 ou précédente), l'option est ignorée, toutes les instructions SQL sont placées dans le fichier de sortie et un message est affiché.
Un message est consigné dans le fichier journal pour les instructions SQL qui ne sont pas écrites dans le fichier de sortie pureQueryXML. Si l'option -showDetails est définie sur true, toutes les instructions non écrites dans le fichier de sortie s'affichent.
La valeur racine_nom_package doit respecter les contraintes imposées par la base de données DB2 que vous utilisez.
Si vous prévoyez de générer des fichiers DBRM avec l'utilitaire pureQuery StaticBinder plutôt que de créer des packages DB2, vous devez utiliser des majuscules pour la valeur racine_nom_package et cette valeur ne doit pas comporter plus de 6 caractères. L'utilitaire Configure ajoute des caractères à la racine du nom soit lorsque le fichier pureQueryXml contient des instructions DDL, soit lorsque le nombre maximal d'instructions par package (défini avec sqlLimit) est atteint. Si vous utilisez l'utilitaire StaticBinder pour générer un fichier DBRM, cet utilitaire émet une exception dès lors que vous dépassez un total de 8 caractères pour la combinaison racine_nom_package / caractères supplémentaires consécutifs à l'intervention de l'utilitaire Configure / niveau d'isolement.
Si l'option -cleanConfigure est définie sur TRUE, l'option -setPreStatusOfAllPkgs est ignorée. Aucun message n'est consigné.
Cette valeur par défaut est 100.
Package avec les 100 premières instructions SQL | Package avec les n instructions SQL suivantes, où 100 < n < 200 | |
---|---|---|
Niveau d'isolement CS | monPackageA1 | monPackageB1 |
Niveau d'isolement RR | monPackageA2 | monPackageB2 |
Niveau d'isolement RS | monPackageA3 | monPackageB3 |
Niveau d'isolement UR | monPackageA4 | monPackageB4 |
Les chiffres représentent le niveau d'isolement des packages, cependant que les lettres représentent le nombre de packages créés selon la valeur de sqlLimit et le nombre d'instructions présentes dans le fichier pureQueryXML. Les lettres sont celles de l'alphabet anglais, de A à Z. Si la lettre Z est atteinte alors qu'il reste des packages à créer, une deuxième lettre est ajoutée à la première, ce qui donne AA, AB, AC, etc. Si les noms deviennent trop longs pour votre base de données, réduisez la longueur du nom racine du package ou augmentez la valeur de sqlLimit. Vous pouvez également utiliser l'option -forceSingleBindIsolation pour supprimer le nombre indiquant le niveau d'isolement, si vous prévoyez de créer un package pour un niveau d'isolement unique.
Dans certaines situations, l'utilitaire Configure dépasse la limite de l'instruction SQL lors de la création d'ensembles d'instructions représentant les packages DB2. Toutes les instructions SQL qui manipulent un curseur doivent se trouver dans le package contenant l'instruction DECLARE CURSOR pour ce curseur. Par exemple, si une application exécute quinze instructions UPDATE différentes qui se réfèrent au même curseur, ces quinze instructions doivent toutes se trouver dans le package DB2 contenant l'instruction DECLARE CURSOR pour ce curseur.
Pour que votre application maintienne des performances optimales, n'indiquez pas de valeur supérieure à 400 pour sqlLimit.
>>-+--------------------------+---------------------------------> '- -traceFile--nom_fichier-' >--+---------------------------+------------------------------->< | .-OFF-----. | '- -traceLevel--+-ALL-----+-' +-SEVERE--+ +-WARNING-+ +-INFO----+ +-CONFIG--+ +-FINE----+ +-FINER---+ '-FINEST--'
Le succès ou l'échec de la validation de schéma XML est déterminé et signalé pour chaque fichier en entrée. En cas d'échec d'un fichier en entrée, le traitement de la configuration ne s'arrête pas et les fichiers suivants sont traités.
En cas d'échec de la validation de schéma par un fichier pureQueryXML, la configuration du fichier ne s'achève pas. La première erreur de validation de schéma et l'échec de la configuration du fichier sont signalés.
Seule l'édition actuelle ou la version précédente des fichiers pureQueryXML est validée (version 4 ou 3). En cas de détection d'une version antérieure du fichier pureQueryXML, la validation n'est pas appliquée à ce fichier.
Les erreurs de validation sont imprimées en tant que résultats de l'utilitaire Configure.
Pour connaître les mises à jour que l'utilitaire Configure apporte à un fichier pureQueryXML, vous pouvez ouvrir ce fichier dans un éditeur.
Utilisez ce paramètre pour continuer à utiliser les packages DB2 créés à partir des instructions SQL dans le fichier pureQueryXML.
Si la valeur de l'attribut isBindable est true pour l'ensemble d'instructions et false pour une instruction SQL de l'ensemble, la valeur de la propriété allowDynamicSQL de pureQuery Runtime contrôle si pureQuery Runtime doit tenter d'exécuter l'instruction de manière dynamique ou doit renvoyer une erreur.
Si la valeur de l'attribut isBindable est false pour l'ensemble d'instructions, la valeur de la propriété allowDynamicSQL de pureQuery Runtime contrôle si pureQuery Runtime doit tenter d'exécuter une instruction SQL de l'ensemble de manière dynamique ou doit renvoyer une erreur.
Vous pouvez utiliser l'éditeur pureQueryXML dans le plan de travail pour modifier la valeur de l'attribut isBindable dans un fichier pureQueryXML pour un ensemble d'instructions et une instruction.
Si vous éditez manuellement un fichier pureQueryXML, veillez à créer au préalable une copie de sauvegarde de ce fichier. Utilisez l'option -validateXml avec les utilitaires pureQuery Merge, Configure et StaticBinder pour effectuer la validation du schéma XML dans les fichiers pureQueryXML d'entrée.
Si vous devez modifier un fichier pureQueryXML en dehors du plan de travail, associez l'attribut configureStatus à la valeur REQUIRED dans la balise de début de l'ensemble d'instructions statementSet à modifier. Une fois le fichier modifié, exécutez l'utilitaire Configure sur le fichier.
<statementSet configureStatus="REQUIRED">
Si vous modifiez un fichier pureQueryXML en dehors du plan de travail, vous pouvez modifier la valeur de l'attribut isBindable pour un ensemble d'instructions et une instruction.
Pour modifier l'attribut isBindable d'un ensemble d'instructions, modifiez la valeur de l'attribut isBindable de l'élément de package correspondant à l'élément enfant de l'élément de l'ensemble d'instructions.
Pour modifier l'attribut isBindable d'une instruction SQL, modifiez la valeur de l'attribut isBindable de l'élément statementAttributes correspondant à l'élément enfant de l'élément de l'instruction.
<statementSet configureStatus="AUTO"> <package collection="NULLID" consistencyToken="0000012551b7579f" isBindable="true" isDDLPackage="false" name="pureQu" version=""/> <statements> <statement id="1" sectionNumber="1"> <statementDescriptor> <prepareSql>SELECT CID FROM CUSTOMER WHERE CID > 1002 </prepareSql> <statementType>QUERY</statementType> <resultSetMetadata> <column columnName="CID" columnNameX="CID" databaseName="XMLTEST" databaseSchema="TEST " db2type="492" length="8" nullable="false" tableName="CUSTOMER"/> </resultSetMetadata> <statementAttributes cursorName="DB_PDQ_SPC2" isBindable="true" prepareOptions="FOR READ ONLY " resultSetConcurrency="CONCUR_READ_ONLY" resultSetHoldability="HOLD_CURSORS_OVER_COMMIT" resultSetType="TYPE_FORWARD_ONLY"/> <processedSql>SELECT CID FROM CUSTOMER WHERE CID > 1003</processedSql> </statementDescriptor> <statementMetadata> <traceInfo> <sqlDefinitionStackTraces> <trace> . . . </statementSet>
Dans le fragment XML suivant de l'exemple, l'attribut isBindable se trouve dans la balise de début de l'élément du package. La valeur est true.
<package collection="NULLID" consistencyToken="0000012551b7579f" isBindable="true" isDDLPackage="false" name="pureQu" version=""/>
Dans le fragment XML suivant de l'exemple, l'ensemble d'instructions contient l'instruction SQL SELECT CID FROM CUSTOMER WHERE CID > 1002. L'attribut isBindable de l'instruction SQL est un attribut de l'élément statementAttributes. L'élément statementAttributes est un élément enfant de l'élément de l'instruction qui contient l'instruction SQL. La valeur est true.
<statementAttributes cursorName="DB_PDQ_SPC2" isBindable="true" prepareOptions="FOR READ ONLY " resultSetConcurrency="CONCUR_READ_ONLY" resultSetHoldability="HOLD_CURSORS_OVER_COMMIT" resultSetType="TYPE_FORWARD_ONLY"/>
Lorsque pureQuery Runtime capture des instructions SQL exécutées dans une base de données DB2, certaines valeurs des registres spéciaux DB2 sont contrôlées et enregistrées avec les instructions SQL. Les valeurs des registres spéciaux enregistrées sont des valeurs couramment définies et qui peuvent affecter le comportement de l'instruction SQL si elles sont modifiées.
L'utilitaire Configure affiche l'activité du registre spécial enregistrée dans le fichier pureQueryXML dans le cadre de son activité.
Pour créer des ensembles d'instructions en fonction des informations des registres spéciaux enregistrées avec les instructions SQL, indiquez l'option -groupSQLBySpecialRegisters.
Pour créer un fichier d'options StaticBinder contenant des informations de liaison basées sur les données des registres spéciaux enregistrées lors de la capture des instructions SQL, indiquez l'option -optionsFileForBind. Vous pouvez créer un fichier d'options StaticBinder même si vous n'avez pas indiqué l'option -groupSQLBySpecialRegisters pour créer des ensembles d'instructions en fonction des informations des registres spéciaux des instructions SQL. Pour plus d'informations sur le fichier et les données des registres spéciaux enregistrées par pureQuery Runtime, reportez-vous aux liens connexes à la fin de cette rubrique.
Lorsque pureQuery Runtime capture une instruction SQL dans un fichier pureQueryXML, il enregistre les informations des registres spéciaux pour l'instruction. Dans le fichier, les informations des registres spéciaux sont stockées dans l'élément XML nommé specialRegValuesSet.
L'élément specialRegValuesSet contient une ou plusieurs instances de l'élément XML nommé specialRegValue. L'attribut specialRegValueId est un attribut de l'élément specialRegValue. La valeur de l'attribut specialRegValueId est l'ID de l'élément specialRegValue.
L'élément specialRegValue contient également un ensemble d'informations des registres spéciaux enregistrées lors de la capture de l'instruction SQL. Les instructions SQL capturées sont stockées dans une instance de l'élément XML statementSet. Chaque élément statementSet contient une ou plusieurs instances d'un élément XML nommé statement. Chaque instruction contient des informations SQL sur l'instruction SQL capturée.
La valeur de l'attribut specialRegValueId permet de lier les informations du registre spécial de l'élément specialRegValue aux instructions SQL. pureQuery Runtime indique la valeur de l'attribut specialRegValueId sous la forme de la valeur d'un attribut de l'élément nommé statementAttributes de l'instruction SQL.
Pour plus d'informations sur les données des registres spéciaux enregistrées par pureQuery Runtime, reportez-vous aux liens connexes à la fin de cette rubrique.
Le fragment XML suivant présente un exemple de l'élément specialRegValuesSet d'un fichier pureQueryXML :
<specialRegValuesSet> <specialRegValue specialRegValueId="0" specialRegisterVectorValue="UNTRACKED_SET: FALSE| SCHEMA: MYTEST | PATH: "SYSIBM","SYSFUN","SYSPROC", "SYSIBMADM","MYTEST"| SQLID: MYTEST | DECFLOAT ROUNDING: ROUND_HALF_EVEN"/> <specialRegValue specialRegValueId="1" specialRegisterVectorValue="UNTRACKED_SET: FALSE| SCHEMA: DB2ADMIN| PATH: "SYSIBM","SYSFUN","SYSPROC", "SYSIBMADM","DB2ADMIN"| SQLID: DB2ADMIN| DECFLOAT ROUNDING: ROUND_HALF_EVEN"/> </specialRegValuesSet>
<statement id="1" sectionNumber="1"> <statementDescriptor> <prepareSql>SELECT count(EMPNO) FROM EMPLOYEE WHERE WORKDEPT NOT LIKE 'E21' </prepareSql> <statementType>QUERY</statementType> <resultSetMetadata> <column columnName="1" databaseName="SAMPLE" db2type="496" length="4" nullable="false" unnamedColumn="1"/> </resultSetMetadata> <statementAttributes cursorName="DB_PDQ_SPC5" isBindable="true" prepareOptions="FOR READ ONLY " resultSetConcurrency="CONCUR_READ_ONLY" resultSetHoldability="HOLD_CURSORS_OVER_COMMIT" resultSetType="TYPE_FORWARD_ONLY" specialRegValuesUsed="0,1"/> <processedSql>SELECT count(EMPNO) FROM EMPLOYEE WHERE WORKDEPT NOT LIKE 'E22' </processedSql> </statementDescriptor> . . . </statement>
Dans l'exemple, la valeur de l'attribut specialRegValuesUsed de l'élément statementAttributes indique les deux ID des ensembles du registre spécial. Les valeurs des ID de l'ensemble sont 1 et 2. pureQuery Runtime a capturé l'instruction SQL plusieurs fois. Lorsque pureQuery a capturé l'instruction, deux ensembles différents d'informations du registre spécial ont été enregistrés.
Soit deux fichiers pureQueryXML, un pour chaque connexion réalisée par l'application d'API différente de pureQuery. Ces fichiers sont nommés capture_sales.pdqxml (contenant 450 instructions SQL) et capture_employee.pdqxml (contenant également 450 instructions SQL, dont 50 sont des instructions DDL).
Pour ces fichiers, vous souhaitez fournir les valeurs suivantes à l'utilitaire Configure lors de la première exécution de l'utilitaire sur ces fichiers :
Options pour l'utilitaire Configure | capture_sales.pdqxml | capture_employee.pdqxml |
---|---|---|
-collection | first | second |
-markDDLForBind | FALSE | FALSE |
-pkgVersion | 1.0 | 1.0 |
-rootPkgName | PK001S | PK005E |
-sqlLimit | 200 | 200 |
java com.ibm.pdq.tool.Configure -collection first -pkgVersion 1.0 -rootPkgName PK001S \ -sqlLimit 200 -pureQueryXml C:\capture_files\capture_sales.pdqxml
java com.ibm.pdq.tool.Configure -collection second -pkgVersion 1.0 -rootPkgName PK005E \ -sqlLimit 200 -pureQueryXml C:\capture_files\capture_employee.pdqxml
La commande peut ressembler à ce qui suit :
java com.ibm.pdq.tool.Configure -optionsFile myOptionsFile.txt
Le fichier d'options, qui peut porter un nom et une extension pris en charge par votre système d'exploitation, contient ces entrées :
defaultOptions = -pkgVersion 1.0 -sqlLimit 200 C:\capture_files\capture_sales.pdqxml = -collection first -rootPkgName PK001S C:\capture_files\capture_employee.pdqxml = -collection second -rootPkgName PK005E
capture_sales.pdqxml_1.0
capture_employee.pdqxml_1.0
capture_employee.ddl
SELECT * FROM TABLE3 SELECT * FROM TABLE2 SELECT * FROM TABLE1
Statement set 1: SELECT * FROM TABLE3 Statement set 2: SELECT * FROM TABLE2 Statement set 3: SELECT * FROM TABLE1
Statement set 1: SELECT * FROM TABLE1 Statement set 2: SELECT * FROM TABLE2 SELECT * FROM TABLE3
Statement set 1: SELECT * FROM TABLE1, SELECT * FROM TABLE2 Statement set 2: SELECT * FROM TABLE3
Il est déconseillé d'utiliser le même nom de table dans plusieurs définitions d'ensembles d'instructions. Le cas échéant, un message d'avertissement sera consigné.