Archives de catégorie : SQLCODE

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

CODE RETOUR -872

A VALID CCSID HAS NOT YET BEEN SPECIFIED FOR THIS SUBSYSTEM

Explication :
Un CCSID valide n’a pas été spécifié dans le paramètre de sous-système ASCII CCSID, EBCDIC CCSID ou UNICODE CCSID sur le panneau d’installation DSNTIPF.

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

Réponse du programmeur :
Contactez votre administrateur système pour faire définir le CCSID nécessaire pour votre système.

SQLSTATE :
51032

CODE RETOUR -873

THE STATEMENT REFERENCED DATA ENCODED WITH DIFFERENT ENCODING SCHEMES OR CCSIDS IN AN INVALID CONTEXT

Explication :
L’instruction SQL référence les données de plusieurs schémas de codage ou CCSID dans un contexte où la référence n’est pas autorisée. Cette erreur peut se produire pour l’une des raisons suivantes :

  • La définition d’une nouvelle table est spécifiée pour être “comme” une vue existante qui fait référence à des données provenant de plusieurs schémas de codage.
  • Les tables parent et enfant référencées dans la définition d’une contrainte référentielle contenant une ou plusieurs colonnes non numériques sont encodées avec des schémas d’encodage différents.
  • La définition d’une table de requête matérialisée utilise un schéma de codage différent de celui de l’espace table conteneur.
  • L’instruction SELECT référence des données codées dans plusieurs schémas de codage et contient également une instruction INSERT, DELETE, UPDATE ou MERGE qui référence des données codées avec un schéma de codage unique.
  • Un déclencheur INSTEAD OF est créé sur une vue qui fait référence à plusieurs encodages ou CCSID.

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

Réponse du programmeur :
Corrigez l’instruction SQL.

SQLSTATE :
53090