Tous les articles par Mr COBOL

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

CODE RETOUR -846

INVALID SPECIFICATION OF AN IDENTITY COLUMN OR SEQUENCE OBJECT object-type object-name. REASON CODE = reason-code

Explication :
Pour une colonne ou une séquence d’identité, la spécification d’un attribut dans une instruction CREATE ou ALTER peut être invalide.

Ce message est également émis si nom-objet identifie une colonne DB2_GENERATED_DOCID_FOR_XML.

object-type
Le type d’objet.

object-name
Le nom de l’objet.

reason-code
La raison du message ou du code SQL, indiquée par l’une des valeurs suivantes :

1Le type de données sous-jacent de la colonne d’identité ou de l’objet de séquence n’est pas pris en charge. Les colonnes d’identité et les objets de séquence prennent en charge les types de données suivants : SMALLINT, INTEGER, BIGINT et DECIMAL (ou NUMERIC) avec une échelle de zéro.
2La valeur de START WITH, INCREMENT BY, MINVALUE, MAXVALUE ou RESTART WITH est en dehors de la plage pour le type de données de la colonne d’identité ou de l’objet de séquence. Si la séquence modifiée est DSNSEQ_IMPLICITDB, la valeur de MAXVALUE est en dehors de la plage comprise entre 1 et 60000 inclus.
3MINVALUE doit être inférieur ou égal à MAXVALUE.
4Une valeur non valide a été spécifiée pour CACHE. La valeur doit être un INTEGER avec une valeur minimale de 2.
5Une procédure d’édition définie avec une sensibilité d’attribut de ligne a été spécifiée pour la colonne d’identité.
6Une colonne d’identité a été spécifiée pour une table temporaire globale déjà définie par une instruction CREATE GLOBAL TEMPORARY TABLE. Cette erreur peut se produire pour une instruction CREATE GLOBAL TEMPORARY TABLE ou une instruction ALTER TABLE pour une table temporaire globale lors d’une tentative d’ajout d’une colonne d’identité à une table temporaire globale existante déjà définie par une instruction CREATE GLOBAL TEMPORARY TABLE.

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

Réponse du programmeur :
Corrigez la syntaxe et soumettez à nouveau la déclaration.

SQLSTATE :
42815

CODE RETOUR -867

INVALID SPECIFICATION OF A ROWID COLUMN

Explication :
Pour une instruction ALTER TABLE ou CREATE TABLE, la spécification d’une colonne ROWID peut être invalide pour l’une des raisons suivantes :
– Une colonne ROWID ne peut pas être ajoutée à une table temporaire.
– La clause referential-constraint ne peut pas spécifier une colonne ROWID en tant que colonne d’une clé étrangère.
– Une colonne ROWID ne peut pas être une colonne d’une clé primaire.
– Une colonne ROWID ne peut pas être une colonne dans une table avec une procédure d’édition définie avec une sensibilité d’attribut de ligne.

Si plusieurs échanges sont tentés consécutivement, il doit y avoir un COMMIT entre eux. Ce COMMIT est déjà requis avant que DML puisse être fait. Si un COMMIT n’est pas effectué entre les échanges, un code SQL -909 sera émis.

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

Réponse du programmeur :
Corrigez la syntaxe et soumettez à nouveau la déclaration.

SQLSTATE :
428C7

CODE RETOUR -870

THE NUMBER OF HOST VARIABLES IN THE STATEMENT IS NOT EQUAL TO THE NUMBER OF DESCRIPTORS

Explication :
Le nombre de variables hôtes dans l’instruction SQL ne correspond pas au nombre de descripteurs de variables hôtes.

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

Réponse du programmeur :
Corrigez le programme d’application. La cause la plus probable de ce problème est un deux-points manquant avant une variable hôte.

Détermination du problème :
Si l’instruction SQL est liée localement, les descripteurs sont créés par le précompilateur Db2. Pour une instruction SQL distante, les descripteurs sont construits par DDF et sont passés dans le tableau SQLSTTVRB.

SQLSTATE :
58026