Tous les articles par Mr COBOL

CODE RETOUR -807

ACCESS DENIED: PACKAGE package-name IS NOT ENABLED FOR ACCESS FROM connection-type connection-name

Explication :
L’accès est refusé pour l’une des raisons suivantes :
– Il est désactivé, soit à partir du ‘type-de-connexion’, soit à partir du ‘type-de-connexion’ avec le ‘nom-de-connexion’ spécifique.
– La bibliothèque d’attachement que vous utilisez provient d’une version précédente de Db2 qui ne prend pas en charge les options ENABLE et DISABLE de l’opération de liaison.

Les variables sont :

package-name
Le nom du package (collection.package-id).

connection-type
L’un des éléments suivants : BATCH, DB2CALL, REMOTE, IMSBMP, IMSMPP, CICS®, DLIBATCH ou UNKNOWN.

connection-name
Nom de la connexion restreinte. Si tous les noms de connexion d’un type de connexion spécifique sont limités, cette valeur n’est pas spécifiée.

Action du système :
L’instruction n’est pas exécutée et le package n’est pas alloué.

Réponse du programmeur système :
L’un des éléments suivants :
– Reconnectez le package pour lui permettre de s’exécuter avec le type et le nom de connexion requis.
– Vérifiez la table de catalogue SYSPLSYSTEM ou SYSPKSYSTEM pour trouver une connexion à partir de laquelle le package peut être exécuté. — Corrigez la bibliothèque attachée.

SQLSTATE :
23509

CODE RETOUR -808

THE CONNECT STATEMENT IS NOT CONSISTENT WITH THE FIRST CONNECT STATEMENT

Explication :
La sémantique CONNECT qui s’applique à un processus d’application est déterminée par la première instruction CONNECT exécutée (avec ou sans succès) par le processus d’application. L’une des règles suivantes a été enfreinte :
– Une instruction CONNECT de type 2 ne peut pas être exécutée après l’exécution d’une instruction CONNECT de type 1.
– Une instruction CONNECT de type 1 ne peut pas être exécutée après l’exécution d’une instruction CONNECT de type 2.

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

Réponse du programmeur :
La cause probable de cette erreur est que différents programmes du processus d’application ont été précompilés avec différentes options CONNECT.

Assurez-vous que le processus d’application utilise des instructions CONNECT de type 1 ou de type 2, puis soumettez à nouveau le travail. Le type de CONNECT à utiliser est une option du précompilateur. La valeur par défaut est le type 2 CONNECT.

SQLSTATE :
08001

CODE RETOUR -812

THE SQL STATEMENT CANNOT BE PROCESSED BECAUSE A BLANK COLLECTION-ID WAS FOUND IN THE CURRENT PACKAGESET SPECIAL REGISTER WHILE TRYING TO FORM A QUALIFIED PACKAGE NAME FOR PROGRAM program-name.consistency-token USING PLAN plan-name

Explication :
La dernière entrée ou la seule entrée dans la liste des packages pour le plan contenait un astérisque (*) comme valeur de l’ID de collection. Le registre spécial CURRENT PACKAGESET doit être défini sur un ID de collection non vide pour former un nom de package qualifié.

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

Réponse du programmeur :
Définissez le registre spécial CURRENT PACKAGESET sur l’ID de collecte correct ou demandez à votre administrateur système de vérifier l’exactitude de la liste des packages du plan.

Si cette erreur se produit dans une application qui s’exécute sous le pilote IBM® Data Server pour JDBC et SQLJ, vous avez peut-être trop d’objets Statement, PreparedStatement ou CallableStatement ouverts simultanément. Modifiez votre application pour réduire le nombre d’objets ouverts simultanément ou exécutez à nouveau l’utilitaire DB2Binder avec une valeur de paramètre -size supérieure pour augmenter le nombre de packages disponibles pour le pilote.

SQLSTATE :
22508

CODE RETOUR -819

THE VIEW CANNOT BE PROCESSED BECAUSE THE LENGTH OF ITS PARSE TREE IN THE CATALOG IS ZERO

Explication :
SYSIBM.SYSVTREE.VTREE est une colonne de chaîne de longueur variable qui contient les arborescences d’analyse des vues. Lors du traitement d’une vue, le champ de contrôle de longueur de son arbre d’analyse s’est avéré être égal à zéro.

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

Réponse du programmeur :
C’est une erreur de système. Si vous suspectez une erreur dans Db2, vous devrez peut-être signaler le problème. Pour plus d’informations sur l’identification et le signalement du problème, voir Collecte des données de diagnostic.

SQLSTATE :
58004

CODE RETOUR -820

THE SQL STATEMENT CANNOT BE PROCESSED BECAUSE catalog-table CONTAINS A VALUE THAT IS NOT VALID IN THIS RELEASE

Explication :
Une colonne de la table de catalogue indiquée contient une valeur qui empêche la poursuite du traitement d’une instruction SQL. La signification de la valeur est inconnue dans la version de Db2. Si un repli s’est produit, la valeur est probablement le résultat de l’utilisation d’une nouvelle fonction avant le repli.

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

Réponse du programmeur :
Vérifiez que l’instruction fait référence aux tables ou vues voulues et que le problème est le résultat d’un repli. Si tel est le cas, l’instruction ne peut pas être corrigée car elle dépend d’une fonction qui n’est pas prise en charge dans la version actuelle. Si le problème n’est pas le résultat d’un repli, -820 est une erreur système. Si vous suspectez une erreur dans Db2, vous devrez peut-être signaler le problème. Pour plus d’informations sur l’identification et le signalement du problème, voir Collecte des données de diagnostic.

SQLSTATE :
58004

CODE RETOUR -822

THE SQLDA CONTAINS AN INVALID DATA ADDRESS OR INDICATOR VARIABLE ADDRESS

Explication :
Le programme d’application a placé une adresse invalide dans le SQLDA.

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

Réponse du programmeur :
Corrigez le programme d’application de sorte que les adresses valides soient placées dans SQLDA.

SQLSTATE :
51004

CODE RETOUR -840

TOO MANY ITEMS RETURNED IN A SELECT, INSERT LIST, FROM MERGE, OR FROM UNNEST

Explication :
Le nombre d’éléments renvoyés dans la liste SELECT, spécifiés dans une liste INSERT, spécifiés dans une instruction MERGE ou renvoyés à partir d’un appel de UNNEST dépasse le maximum autorisé de 750.

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

Réponse du programmeur :
Déterminez si toutes les informations sont réellement nécessaires. Par exemple, le nombre d’éléments renvoyés par l’instruction SQL SELECT * FROM A, B, C est la somme du nombre de colonnes dans les trois tables. Toutes les données de colonne peuvent ne pas être nécessaires.

Réécrivez l’instruction SQL de manière à ce que seuls les éléments d’information nécessaires soient renvoyés ou décomposez l’instruction SQL en deux ou plusieurs instructions.

SQLSTATE :
54004

CODE RETOUR -842

A CONNECTION TO location-name ALREADY EXISTS

Explication :

L’une des situations suivantes s’est produite :

  • Une instruction CONNECT identifie un emplacement avec lequel le processus d’application dispose d’une connexion privée, à l’aide d’un accès dirigé par le système.
  • SQLRULES(STD) est en vigueur et une instruction CONNECT identifie une connexion SQL existante.
  • Une connexion privée, utilisant un accès dirigé par le système, ne peut pas être établie en raison d’une connexion SQL existante à cet emplacement.
  • Une requête CONNECT (type 2) qui inclut la clause USER/USING identifie une connexion SQL existante.

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

Réponse du programmeur :

La correction dépend de l’erreur, comme suit :

  • Si le nom de l’emplacement n’est pas le nom voulu, corrigez-le.
  • Si SQLRULES(STD) est en vigueur et que l’instruction CONNECT identifie une connexion SQL existante, remplacez CONNECT par SET CONNECTION ou remplacez l’option par SQLRULES(Db2).
  • Si l’instruction CONNECT identifie une connexion privée existante, détruisez cette connexion (en utilisant l’instruction RELEASE dans une unité de travail précédente) avant d’exécuter l’instruction CONNECT. Si les instructions SQL qui suivent CONNECT peuvent être exécutées à l’aide d’un accès dirigé par le système, une autre solution consiste à modifier l’application pour utiliser cette méthode.
  • Si l’accès dirigé par le système ne peut pas être utilisé, détruisez la connexion SQL en conflit (en utilisant l’instruction RELEASE dans une unité de travail précédente) avant d’exécuter l’instruction SQL qui nécessite un accès dirigé par le système. Une autre solution consiste à modifier l’application afin que seul l’accès dirigé par l’application soit utilisé.
  • Détruisez la connexion (en utilisant l’instruction RELEASE dans une précédente unité de travail) avant d’exécuter l’instruction CONNECT qui inclut la clause USER/USING.

Corrigez l’erreur dans l’application, reliez à nouveau le plan ou le package, puis soumettez à nouveau le travail.

SQLSTATE :
08002

CODE RETOUR -843

THE SET CONNECTION OR RELEASE STATEMENT MUST SPECIFY AN EXISTING CONNECTION

Explication :
L’une des règles suivantes a été enfreinte :
– Une instruction SET CONNECTION doit identifier une connexion SQL existante du processus d’application.
– Une instruction RELEASE doit identifier une connexion existante du processus d’application.

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

Réponse du programmeur :
La correction dépend de l’erreur, comme suit :
– Si le nom de l’emplacement n’est pas le nom voulu, corrigez-le.
– Si le nom d’emplacement n’identifie pas une connexion SQL existante, remplacez SET CONNECTION par une instruction CONNECT.
– Si RELEASE CURRENT a été exécuté dans l’état non connecté ou si le nom d’emplacement spécifié n’identifie pas une connexion privée SQL ou Db2 existante, supprimez l’instruction RELEASE.

Corrigez l’erreur dans l’application, reliez à nouveau le plan et soumettez à nouveau le travail.

SQLSTATE :
08003

CODE RETOUR -845

A PREVIOUS VALUE EXPRESSION CANNOT BE USED BEFORE THE NEXT VALUE EXPRESSION GENERATES A VALUE IN THE CURRENT APPLICATION PROCESS FOR SEQUENCE sequence-name

Explication :
Une expression PREVIOUS VALUE a spécifié la séquence nom-séquence, mais aucune valeur n’a encore été générée pour cette séquence. Une expression NEXT VALUE doit être émise dans ce processus d’application pour générer une valeur pour cette séquence avant qu’une expression PREVIOUS VALUE pour la séquence puisse être émise.

Cette erreur peut également se produire après la suppression d’une séquence et l’annulation de l’instruction DROP.

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

Réponse du programmeur :
Emettez au moins une expression NEXT VALUE pour une séquence avant d’émettre une expression PREVIOUS VALUE pour la même séquence dans une connexion.

SQLSTATE :
51035