Archives de catégorie : SQLCODE

CODE RETOUR -992

PACKAGE package-name CANNOT BE EXECUTED OR DEPLOYED ON LOCATION location-name

Explication du code retour -992 :
Une non-concordance dans les niveaux de code Db2 empêche l’exécution ou le déploiement du package.

package-name
Le nom du paquet.

location-name
Le système Db2 sur lequel le déploiement ou l’exécution a été tenté.

L’une des conditions suivantes s’est produite :

  • Le package ne peut pas être exécuté ou déployé en raison d’une non-concordance au niveau du code Db2 entre le système identifié par location-name  et le serveur actuel. Le serveur actuel et le système identifié par location-name  peuvent être le même système.
  • La représentation d’une routine SQL ne peut pas être exécutée sur le système. Le package a été lié à une version ou à un niveau de maintenance différent de celui que le système peut prendre en charge.

Le déploiement est le processus d’établissement d’une routine SQL à un emplacement distant sans régénérer la représentation de cette routine. Le déploiement nécessite que le serveur distant soit capable de comprendre les structures générées par le serveur actuel pour le package identifié. La différence de niveau de code entre le serveur actuel et l’emplacement distant rend cela impossible. La différence peut être dans les niveaux de version ou les niveaux de maintenance, mais elle est suffisamment importante pour que le package ne puisse pas être déployé du serveur actuel vers l’emplacement distant.

Cette condition peut être spécifique à ce package particulier. D’autres packages peuvent être exécutés avec succès sur ce système ou déployés à partir du serveur actuel vers l’emplacement distant.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Si cette condition se produit lors du déploiement d’une routine SQL, réessayez après la mise à jour de Db2 à location-name vers la version ou le niveau de maintenance pouvant prendre en charge le package en cours de déploiement.

Si cette condition se produit dans des contextes autres que le déploiement (par exemple, un package qui a été créé avant l’application d’une PTF n’est plus pris en charge par le niveau de Db2 après l’application de cette PTF), exécutez alors l’instruction ALTER PROCEDURE ou ALTER FUNCTION avec la clause REGENERATE pour cette version de la routine SQL sur le serveur actuel afin de régénérer le package à l’aide du niveau de maintenance actuel. L’instruction ALTER PROCEDURE ou ALTER FUNCTION avec la clause REGENERATE entraînera une nouvelle liaison du package sur le serveur local.

Si la routine SQL a requis la réplication du package sur différents serveurs, le processus doit être répété pour la routine SQL régénérée.

Si des variantes du package ont été créées localement avec différents ID de collection, ces packages supplémentaires doivent également être explicitement liés.

SQLSTATE :
51008

CODE RETOUR -991

CALL ATTACH WAS UNABLE TO ESTABLISH AN IMPLICIT CONNECT OR OPEN TO DB2. RC1= rc1 RC2= rc2

Explication :
Call attach a tenté d’effectuer une connexion et une ouverture implicites à la suite d’une instruction SQL. La connexion ou l’ouverture a échoué avec les valeurs renvoyées.

rc1
La valeur renvoyée dans FRBRC1 pour l’échec de la demande CONNECT ou OPEN.

rc2
La valeur renvoyée dans FRBRC2 pour l’échec de la demande CONNECT ou OPEN.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Vérifiez que l’application avait l’intention d’utiliser la fonction de rattachement d’appel (CAF) comme mécanisme pour se connecter à Db2. Pour les fonctions ou les procédures stockées s’exécutant dans l’espace d’adressage de procédure stockée établi par WLM, l’application doit être éditée par lien avec ou allouer dynamiquement le module d’interface de langage de pièce jointe RRS (DSNRLI), et non CAF.

SQLSTATE :
57015

CODE RETOUR -989

AFTER TRIGGER trigger-name ATTEMPTED TO MODIFY A ROW IN TABLE table-name THAT WAS MODIFIED BY AN SQL DATA CHANGE STATEMENT WITHIN A FROM CLAUSE

Explication :
Une instruction de modification de données SQL a été spécifiée dans la clause FROM où FINAL TABLE a été spécifié, mais la table de base cible sous-jacente de l’instruction de modification de données SQL a un déclencheur AFTER défini qui modifie la même table. Ceci est interdit.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Évitez d’utiliser l’instruction de modification de données SQL dans une clause FROM ou modifiez le déclencheur (trigger) afin qu’il ne modifie pas la table qui est la cible de l’instruction de modification de données SQL.

SQLSTATE :
560C3

CODE RETOUR -981

THE SQL STATEMENT FAILED BECAUSE THE RRSAF CONNECTION IS NOT IN A STATE THAT ALLOWS SQL OPERATIONS, REASON reason-code.

Explication :
L’application a tenté d’exécuter une opération SQL, mais la connexion RRSAF n’était pas dans un état permettant le traitement des instructions SQL.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Corrigez l’erreur dans l’application, REBIND, et relancez l’application.

SQLSTATE :
57015

CODE RETOUR -952

PROCESSING WAS INTERRUPTED BY A CANCEL REQUEST FROM A CLIENT PROGRAM

Explication :
Un programme client a émis une demande d’annulation qui a mis fin au traitement de l’instruction SQL.

Action du système :
L’instruction SQL a été interrompue et toutes les modifications apportées par cette instruction ont été annulées. Si un curseur SQL est associé à l’instruction SQL interrompue, ce curseur est fermé.

SQLSTATE :
57014

CODE RETOUR -951

OBJECT object-name OBJECT TYPE object-type IS IN USE AND CANNOT BE THE TARGET OF THE SPECIFIED ALTER STATEMENT

Explication :
Les options de la routine SQL ne peuvent pas être modifiées si la version de la routine est actuellement active sous le même thread qui a émis l’instruction ALTER et qu’une ou plusieurs des options en cours de modification entraînent la reliaison ou la régénération du package pour le Routine SQL.

object-name
Le nom de l’objet.

object-type
Le type d’objet.

Si l’instruction défaillante était ALTER PROCEDURE ACTIVATE VERSION ou ALTER FUNCTION ACTIVATE VERSION, la version active d’une routine SQL actuellement active sous l’appel de routine imbriquée par le même thread ne peut pas être modifiée.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Passez en revue les informations sur les options de modification et les modifications qui entraînent la reliaison ou la régénération des packages associés.

Vérifiez que la logique d’appel de routines imbriquées impliquant des routines SQL et les instructions ALTER fonctionnent comme prévu. Portez une attention particulière aux instructions CALL :HV avec le réglage du registre spécial CURRENT ROUTINE VERSION, car la combinaison de ces instructions peut produire des flux logiques indésirables. S’il est nécessaire d’utiliser plusieurs versions de la même routine SQL dans la chaîne récursive imbriquée, envisagez d’utiliser CALL :HV et le registre spécial CURRENT ROUTINE VERSION pour contrôler la version utilisée, au lieu de la clause ALTER ACTIVATE VERSION.

SQLSTATE :
55007

CODE RETOUR -950

THE LOCATION NAME SPECIFIED IN THE CONNECT STATEMENT IS INVALID OR NOT LISTED IN THE COMMUNICATIONS DATABASE

Explication :

L’une des conditions suivantes s’applique :

  • Le nom de l’emplacement est vide.
  • Le type de données de la variable hôte n’est pas une chaîne de caractères.
  • L’attribut de longueur de la variable hôte est supérieur à 16.
  • Le nom d’emplacement n’apparaît pas dans la colonne LOCATIONS de la table SYSIBM.LOCATIONS, ni le nom du sous-système Db2 local.

Action du système :
La déclaration ne peut pas être traitée. Le processus d’application est placé dans l’état non connecté.

Réponse du programmeur :
Si le nom d’emplacement est spécifié comme valeur d’une variable hôte, assurez-vous que le nom est justifié à gauche dans la variable hôte et, si nécessaire, complété à droite par des blancs. Si ce n’est pas le problème, soit SYSIBM.LOCATIONS doit être mis à jour pour inclure le nom spécifié, soit le nom spécifié doit être modifié pour correspondre à un nom dans SYSIBM.LOCATIONS.

SQLSTATE :
42705

CODE RETOUR -948

DISTRIBUTED OPERATION IS INVALID

Explication :
L’unité d’oeuvre a été lancée avant le démarrage de DDF et l’application a tenté d’effectuer une opération distribuée. L’unité d’oeuvre doit se terminer par une opération de restauration.

Action du système :
Dans les environnements IMS et CICS, toutes les instructions SQL sont rejetées jusqu’à ce qu’une annulation se produise. Dans les autres environnements, toutes les instructions SQL autres qu’un ROLLBACK statique sont rejetées jusqu’à ce qu’un ROLLBACK statique soit exécuté.

Réponse du programmeur :
Une application qui effectue des mises à jour de base de données locales avant le démarrage de DDF ne peut pas effectuer d’opérations distribuées au sein de la même unité de travail. L’unité de travail actuelle doit être terminée par une opération de restauration et une nouvelle unité de travail doit être initiée avant que toute opération SQL puisse être effectuée.

Redémarrez l’unité de travail en cours.

SQLSTATE :
56062

CODE RETOUR -947

THE SQL STATEMENT FAILED BECAUSE IT WILL CHANGE A TABLE DEFINED WITH DATA CAPTURE CHANGES, BUT THE DATA CANNOT BE PROPAGATED

Explication :
L’option DPROP SUPPORT du panneau d’installation est définie sur 2 (prise en charge de DPROP uniquement). L’instruction SQL aurait modifié une table définie avec DATA CAPTURE CHANGES. Cependant, les données ne peuvent pas être propagées car l’instruction SQL ne provient pas d’un sous-système IMS ou la classe de trace de moniteur 6 n’était pas active au début de l’unité de travail pour cette modification.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur système :
Effectuez l’une des actions suivantes :

  • Modifiez l’option d’installation sur 1 (pas de propagation) ou 3 (permet les modifications à partir de n’importe quel sous-système).
  • Modifiez le programme d’application qui reçoit ce SQLCODE afin qu’il puisse être exécuté dans un sous-système IMS et activez la classe de trace 6 du moniteur.

Si l’option d’installation est modifiée sur 3, les modifications SQL apportées aux tables définies avec DATA CAPTURE CHANGES sont autorisées à partir de n’importe quel sous-système, mais elles ne sont pas propagées à moins que l’environnement ne soit configuré pour la propagation.

SQLSTATE :
56038

CODE RETOUR -939

ROLLBACK REQUIRED DUE TO UNREQUESTED ROLLBACK OF A REMOTE SERVER

Explication :
Un commit dynamique a été exécuté avant l’exécution de cette requête. Le serveur distant auquel l’application a été CONNECTée lors du COMMIT dynamique validée avec succès. Cependant, au moins un autre serveur distant (qui était en lecture seule) a annulé sa partie de l’unité de travail distribuée lors de la validation dynamique.

Pour s’assurer qu’une application qui utilise des cursor-hold (curseurs de maintien) du curseur ne suppose pas à tort que la position du curseur est conservée sur un serveur distant qui a été annulé, l’application doit effectuer une opération d’annulation.

Les communications sont toujours établies avec tous les serveurs distants.

Action du système :
Dans les environnements IMS et CICS, toutes les instructions SQL sont rejetées jusqu’à ce que la restauration se produise. Dans les autres environnements, toutes les instructions SQL autres qu’un ROLLBACK statique sont rejetées jusqu’à ce qu’un ROLLBACK statique soit exécuté.

Réponse du programmeur :
Émettez la demande appropriée (en fonction de l’environnement) pour provoquer une restauration. Rétablissez le positionnement du curseur et poursuivez l’application avec la première requête ayant reçu le SQLCODE -939.

SQLERRP contient le nom du module qui a détecté l’échec précédent et placé l’application dans l’état must-abort.

SQLSTATE :
51021