Exécution de mises à jour et de suppressions positionnées

Vous pouvez exécuter des mises à jour et des suppressions positionnées lorsque votre application utilise des méthodes annotées et est exécutée dans une base de données DB2.

Avant de commencer

Vérifiez que votre application répond aux exigences suivantes :
  • Vous pouvez exécuter des mises à jour et des suppressions positionnées uniquement sur les sources de données DB2.
  • La méthode annotée qui exécute l'instruction SELECT (déclarant le curseur) doit retourner un élément ResultSet ou Iterator.
  • La déclaration de la méthode qui exécute l'instruction SELECT et la déclaration de la méthode qui exécute l'instruction UPDATE ou DELETE doivent se trouver dans une interface unique.
  • Les noms que vous utilisez pour les curseurs ne peuvent pas commencer par DB2JCCCURSOR ou DB_PDQ.
  • Vous ne devez pas ouvrir deux curseurs en même temps sur une seule connexion si ces curseurs ont le même nom.
  • pureQuery émet une exception si une application suit ces étapes :
    1. Exécution d'une instruction SELECT déclarant un curseur pour une mise à jour ou une suppression positionnée.
    2. Exécution de la même instruction SELECT sur la même connexion dans laquelle a été exécutée la même instruction précédemment.
    3. Exécution d'une instruction UPDATE ou DELETE utilisant un curseur déclaré par l'une des instructions SELECT déclarés.
    pureQuery ne peut pas déterminer à quel curseur l'instruction UPDATE ou DELETE fait référence.

Pourquoi et quand exécuter cette tâche

Pour les diagrammes de syntaxe des méthodes annotées, voir la section "Syntaxe des mises à jour et suppressions personnalisées" dans Syntaxe des méthodes annotées exécutant SQL sur les bases de données.

Procédure

Pour écrire le code d'exécution d'une mise à jour ou d'une suppression personnalisée :

  1. Lorsque vous déclarez la méthode annotée pour exécuter l'instruction SELECT qui positionne le curseur, utilisez l'attribut cursorName de l'annotation @Cursor pour spécifier le nom du curseur. Cette méthode doit retourner un objet java.sql.ResultSet ou un objet Iterator.
    Avertissement : Si l'instruction SELECT contient une clause FOR UPDATE, mais que vous définissez l'attribut concurrent de l'annotation @Cursor sur java.sql.ResultSet.CONCUR_READ_ONLY (valeur par défaut), la clause FOR UPDATE est prioritaire sur l'attribut. pureQuery ouvre le curseur comme un curseur pouvant être mis à jour.
  2. Lorsque vous déclarez la méthode annotée pour déclarer une instruction UPDATE ou DELETE qui utilise le curseur, voir l'attribut positionedCursorName dans l'annotation @Update pour spécifier le nom du curseur.

Exemple

Pour obtenir un exemple utilisant une instruction SELECT et une instruction UPDATE, voir la section "Syntaxe des mises à jour et des suppressions positionnées" dans Syntaxe des méthodes annotées exécutant SQL sur les bases de données.

Commentaires