Archives de catégorie : SQLCODE

CODE RETOUR -355

A LOB COLUMN IS TOO LARGE TO BE LOGGED

Explication :
L’un des événements suivants s’est produit :

  • une instruction CREATE TABLE pour une table auxiliaire stocke une colonne BLOB, CLOB ou DBCLOB dont la longueur dépasse 1 gigaoctet mais dont l’espace table LOB associé a été défini avec l’attribut LOG YES
  • une instruction ALTER TABLESPACE d’un espace table LOB spécifie la clause LOG YES mais la table auxiliaire dans l’espace table LOB stocke une colonne BLOB ou CLOB dont la longueur dépasse 1 gigaoctet ou une colonne DBCLOB dont la longueur dépasse 500 mégaoctets de caractères

Action du système :
L’instruction ne peut pas être traitée.

Réponse du programmeur :
Modifiez l’attribut de l’espace table LOB en LOG NO ou supprimez la table de base et recréez-la avec des colonnes d’une longueur acceptable pour la journalisation.

SQLSTATE :
42993

CODE RETOUR -354

A ROWSET FETCH STATEMENT MAY HAVE RETURNED ONE OR MORE ROWS OF DATA. HOWEVER, ONE OR MORE NON-TERMINATING ERROR CONDITIONS WERE ENCOUNTERED. USE THE GET DIAGNOSTICS STATEMENT FOR MORE INFORMATION REGARDING THE CONDITIONS THAT WERE ENCOUNTERED

Explication :
Une instruction FETCH d’ensemble de lignes a rencontré une ou plusieurs conditions d’erreur sans fin. Un ou plusieurs avertissements peuvent également avoir été rencontrés. Utilisez l’instruction GET DIAGNOSTICS pour obtenir des informations sur les conditions qui se sont produites et pour déterminer si des données ont été renvoyées. Il est possible qu’une ou plusieurs lignes de données aient été renvoyées. Dans les cas où les informations de ligne renvoyées pour la ligne qui a rencontré la condition sont incomplètes, l’utilisation des données de la ligne qui a rencontré la condition, comme l’affichage ou l’impression des données, n’est pas recommandée.

Action du système :
Db2 a traité l’instruction avec succès, mais avec au moins une erreur sans fin. De plus, la récupération de certaines lignes peut avoir rencontré des avertissements.

Réponse du programmeur :
Analysez les conditions pour déterminer si des actions de suivi sont nécessaires. L’instruction GET DIAGNOSTICS peut être utilisée pour déterminer les actions supplémentaires qui pourraient être nécessaires.

Attention : Il est possible qu’une condition de fin de données ait été détectée. SQLERRD3 et GET DIAGNOSTICS peuvent être utilisés pour déterminer si toutes les lignes demandées ont été récupérées ou si un ensemble de lignes partiel a été renvoyé.

SQLSTATE :
22537

CODE RETOUR -353

FETCH IS NOT ALLOWED, BECAUSE CURSOR cursor-name HAS AN UNKNOWN POSITION

Explication :
La position du curseur pour cursor-name est inconnue. L’extraction de plusieurs lignes précédente pour le curseur cursor-name a entraîné une erreur au milieu du traitement de plusieurs lignes extraites de Db2. Une ou plusieurs des lignes demandées n’ont pas pu être renvoyées au programme suite à l’erreur, laissant la position du curseur inconnue.

L’erreur a peut-être été détectée chez le demandeur. Par exemple, une ligne avec une valeur nulle a été renvoyée à une application, mais aucune variable d’indicateur n’a été fournie. Une instruction FETCH ultérieure entraînerait SQLCODE -353. Si un indicateur avait été fourni, un SQLCODE positif aurait été renvoyé et toutes les lignes extraites de Db2 auraient pu être renvoyées au programme d’application.

Action du système :
L’instruction ne peut pas être traitée. La position du curseur n’est pas modifiée.

Réponse du programmeur :
Fermez et rouvrez le curseur pour réinitialiser la position du curseur. Pour les curseurs déroulants, vous pouvez modifier l’instruction FETCH pour spécifier l’une des autres orientations d’extraction. Par exemple, vous pouvez modifier l’instruction FETCH en spécifiant l’une des orientations d’extraction suivantes :

  • BEFORE ou AFTER
  • orientations de récupération en ligne : FIRST, LAST ou ABSOLUTE pour établir un curseur de ligne valide et récupérer une ligne de données
  • orientations d’extraction positionnées sur l’ensemble de lignes : FIRST ROWSET, LAST ROWSET ou ROWSET STARTING AT ABSOLUTE pour établir une position de curseur d’ensemble de lignes valide et extraire plusieurs lignes de données

Vous pouvez également modifier l’application pour corriger l’erreur qui s’est initialement produite. Par exemple, si l’erreur a été émise parce qu’un indicateur n’a pas été fourni, modifiez l’application pour fournir un indicateur.

SQLSTATE :
24513

CODE RETOUR -352

AN UNSUPPORTED SQLTYPE WAS ENCOUNTERED IN POSITION position-number OF THE INPUT-LIST

Explication :
L’entrée SQLDA d’une instruction OPEN, EXECUTE, FETCH ou CALL contient un SQLTYPE non pris en charge pour un paramètre.

position-number
La position du premier élément dans la SQLDA avec un type de données non pris en charge.
Pour un type de tableau, cette valeur est le numéro de position du premier élément dans la SQLDA avec un type de données non pris en charge pour les éléments du tableau.

Le demandeur d’application ou le serveur d’applications ne prend pas en charge ce type de données. Cette erreur ne peut se produire que dans un environnement client/serveur.

Action du système :
L’instruction ne peut pas être traitée.

Réponse du programmeur :
Modifiez le SQLDA pour exclure le type de données non pris en charge.

SQLSTATE :
56084

CODE RETOUR -351

AN UNSUPPORTED SQLTYPE WAS ENCOUNTERED IN POSITION position-number OF THE SELECT-LIST

Explication :

position-number
La position du premier élément dans la SQLDA avec un type de données non pris en charge.

Cette erreur peut se produire lorsqu’un demandeur d’application ou un serveur d’applications ne prend pas en charge ce type.

Action du système :
L’instruction ne peut pas être traitée.

Réponse du programmeur :
Modifiez l’instruction pour exclure le type de données non pris en charge. Pour une instruction select, supprimez les noms de toutes les colonnes de la liste de sélection avec les types de données non pris en charge.

SQLSTATE :
56084

CODE RETOUR -350

column-name WAS IMPLICITLY OR EXPLICITLY REFERENCED IN A CONTEXT IN WHICH IT CANNOT BE USED

Explication :
L’instruction SQL ne peut pas être traitée car elle fait référence à une colonne dans un contexte non valide.

column-name
Le nom de la colonne.

Les raisons possibles de cette erreur incluent :

Colonnes DECFLOAT
Une colonne DECFLOAT ne peut pas être :

  • Spécifié en tant que colonne d’une clé étrangère dans une clausreferential-constraint.
  • Spécifié en tant que colonne d’une clé parente dans une clause REFERENCES.
  • Spécifié en tant que colonne d’une clé de partitionnement pour le partitionnement par plage.
  • Défini dans une table qui a un EDITPROC.
  • Le type de données de résultat d’une expression clé dans un index basé sur une expression ne doit pas être DECFLOAT ou un type distinct basé sur le type de données DECFLOAT. Un résultat intermédiaire d’une expression clé pour un index peut être le type de données DECFLOAT ou un type distinct basé sur le type de données DECFLOAT.
  • Spécifié en tant que colonne dans une instruction CREATE TABLE ORGANIZE BY HASH ou ALTER TABLE ADD ORGANIZE BY HASH.

Colonnes LOB
Une colonne LOB ne peut pas être :

  • Défini dans une table temporaire (table temporaire globale créée ou table temporaire globale déclarée).
  • Défini dans une table d’accélérateur uniquement.
  • Défini dans une table qui a une procédure d’édition qui est définie avec la sensibilité d’attribut de ligne.
  • Spécifié en tant que colonne de la clé primaire dans une clause PRIMARY KEY.
  • Spécifié en tant que colonne d’une UNIQUE KEY.
  • Spécifié en tant que colonne d’une clé parente dans une clause REFERENCES.
  • Spécifié en tant que colonne d’une clé d’index. De plus, le type de données de résultat, y compris le résultat intermédiaire, d’une expression clé pour un index ne peut pas être un type de données LOB ou un type distinct basé sur un type de données LOB. Pour un index d’expression clé, une colonne LOB en ligne est autorisée comme source de l’expression de fonction SUBSTR et le type de données LOB est autorisé comme résultat intermédiaire de l’expression.
  • Spécifié en tant que colonne d’une clé de partitionnement pour le partitionnement par plage.
  • Référencé par la définition d’un masque de colonne ou d’une autorisation de ligne.
  • Défini comme un masque de colonne.
  • Référencé dans une spécification de période ou une clause de période.
  • Spécifié en tant que colonne dans une instruction CREATE TABLE ORGANIZE BY HASH ou ALTER TABLE ADD ORGANIZE BY HASH.

Colonnes cachées
Une colonne masquée ne peut pas être spécifiée dans une expression clé pour un index.

Colonnes du tableau de résultats

  • Un type de données ROWID, LOB ou XML ne peut pas être le type de données d’une colonne dans la table de résultats d’une clause as-result-table d’une instruction CREATE TABLE ou DECLARE GLOBAL TEMPORARY TABLE.
  • Une colonne d’étiquette de sécurité nom-colonne existe dans la table de résultats de la clause as-result-table ; cependant, ce n’est pas la seule colonne d’étiquette de sécurité dans cette table de résultats. Une table ne peut être définie qu’avec une seule colonne d’étiquette de sécurité.

Colonnes d’étiquettes de sécurité
Une colonne d’étiquette de sécurité ne peut pas être :

  • Spécifié en tant que colonne d’une clé étrangère dans une clause referential-constraint.
  • Spécifié dans une clause REFERENCES.
  • Spécifié dans une expression clé pour un index.

Timestamp avec colonnes de fuseau horaire
Un timestamp avec une colonne de fuseau horaire ne peut pas être spécifié comme colonne d’une clé de partitionnement pour le partitionnement par plage.

Une colonne Unicode Db2 11 dans une table EBCDIC
Une colonne Unicode Db2 11 dans une table EBCDIC ne peut pas être spécifiée dans les éléments suivants :

  • Une instruction ALTER TABLE dans une clause ADD COLUMN si la table est déjà définie avec une EDITPROC.
  • Dans une clause UNIQUE, PRIMARY KEY, REFERENCES, FOREIGN KEY ou ORGANIZE BY HASH.

Cette erreur peut également être émise pour les éléments suivants :

  • Une clause EDITPROC ne peut pas être spécifiée si la table contient une colonne Unicode Db2 11 dans une table EBCDIC.
  • Aucune valeur ne doit être spécifiée après le mot clé DEFAULT pour une colonne Unicode Db2 11 dans une table EBCDIC.
  • NOT PADDED ne doit pas être spécifié pour un index pour une table EBCDIC si la table contient une colonne Db2 11 Unicode.
  • Une clause UNIQUE ou PRIMARY KEY ne doit pas être spécifiée pour une colonne Unicode Db2 11 dans une table EBCDIC.

Colonnes VARBINARY
Une colonne VARBINARY ne peut pas être spécifiée en tant que colonne d’une clé d’index lorsque DESC est également spécifié.

Colonnes XML
Une colonne XML ne peut pas être :

  • Spécifié en tant que colonne de la clé primaire dans une clause PRIMARY KEY.
  • Spécifié en tant que colonne d’une UNIQUE KEY.
  • Spécifié en tant que colonne d’une clé étrangère dans une clause referential-constraint.
  • Spécifié en tant que colonne d’une clé parente dans une clause REFERENCES.
  • Spécifié en tant que colonne d’une clé de partitionnement pour le partitionnement par plage.
  • Défini dans une table temporaire (table temporaire globale créée ou table temporaire globale déclarée).
  • Défini dans une table qui a une procédure d’édition qui est définie avec la sensibilité d’attribut de ligne.
  • Spécifié en tant que colonne d’une clé d’index. De plus, le type de données de résultat, y compris le résultat intermédiaire, d’une expression clé pour un index ne peut pas être un type de données XML. Pour un index XML, seules les colonnes XML peuvent être spécifiées et le type de résultat de la clé d’index peut être DECFLOAT.
  • Spécifié avec la clause SET DEFAULT ou DROP DEFAULT.
  • Référencé par la définition d’un masque de colonne ou d’une autorisation de ligne.
  • Défini comme un masque de colonne.
  • Spécifié en tant que colonne dans une instruction CREATE TABLE ORGANIZE BY HASH ou ALTER TABLE ADD ORGANIZE BY HASH.
  • Spécifié dans une instruction ALTER TABLE dans une clause DROP COLUMN.

Colonnes DOCID
Une colonne DOCID ne peut pas être spécifiée dans les éléments suivants :

  • Une instruction ALTER TABLE dans une clause ALTER COLUMN.
  • Une instruction ALTER TABLE dans une clause DROP COLUMN.

Action du système :
L’instruction ne peut pas être traitée.

Réponse du programmeur :
Corrigez la syntaxe et soumettez à nouveau l’instruction.

SQLSTATE :
42962

CODE RETOUR -348

sequence-expression CANNOT BE SPECIFIED IN THIS CONTEXT

Explication :
L’instruction contient une expression NEXT VALUE ou PREVIOUS VALUE dans un contexte non valide.

L’expression NEXT VALUE ou PREVIOUS VALUE ne peut pas être spécifiée dans les contextes suivants :

  • Condition de jointure d’une jointure externe complète
  • Valeur DEFAULT pour une colonne dans une instruction CREATE TABLE ou ALTER TABLE
  • Définition de colonne générée dans une instruction CREATE TABLE ou ALTER TABLE
  • Définition de table de requête matérialisée dans une instruction CREATE TABLE ou ALTER TABLE
  • Clause as-result-table d’une instruction CREATE TABLE ou DECLARED GLOBAL TEMPORARY TABLE.
  • Condition d’une contrainte CHECK
  • Spécification de la valeur d’entrée pour LOAD
  • instruction CREATE VIEW
  • Expression clé d’une définition d’index.
  • La liste SELECT d’une sous-sélection qui contient une instruction de modification de données NOT ATOMIC.
  • Une expression qui génère la valeur d’un index pour un tableau.

Les expressions NEXT VALUE ne peuvent pas être spécifiées dans les contextes suivants :

  • Expression CAS
  • Liste des paramètres d’une fonction d’agrégat
  • Sous-requête dans un contexte dans lequel elle n’est pas autrement autorisée
  • Instruction SELECT pour laquelle le SELECT externe contient un opérateur DISTINCT ou une clause GROUP BY
  • Instruction SELECT pour laquelle le SELECT externe est combiné avec une autre instruction SELECT à l’aide d’un opérateur ensembliste tel que UNION, EXCEPT ou INTERSECT
  • Condition de jointure d’une jointure
  • Expression de table imbriquée
  • Liste des paramètres d’une fonction de table
  • Clause SELECT du fullselect d’une expression dans la clause SET d’une instruction UPDATE
  • Clause ORDER BY dans l’instruction SELECT
  • Clause ORDER BY dans une spécification OLAP
  • IF, WHILE, DO … UNTIL ou instruction CASE dans une routine SQL
  • Expression clé d’une définition d’index.
  • La liste de sélection d’une sous-sélection qui contient une instruction de modification de données NOT ATOMIC.
  • La liste de sélection d’un fullselect qui contient une clause OFFSET.

Action du système :
L’instruction ne peut pas être traitée.

Réponse du programmeur :
Supprimez la référence à l’expression de séquence et soumettez à nouveau l’instruction.

SQLSTATE :
428F9

CODE RETOUR -346

AN INVALID REFERENCE TO COMMON TABLE EXPRESSION name OCCURS IN THE FIRST FULLSELECT, AS A SECOND OCCURRENCE IN THE SAME FROM CLAUSE, OR IN THE FROM CLAUSE OF A SUBQUERY

Explication :
Le nom de l’expression de table commune name inclut une référence non valide à lui-même, comme décrit par l’un des éléments suivants :

  • Une référence récursive dans le premier fullselect avant l’opérateur set UNION ALL. Le premier fullselect doit être une initialisation et ne peut pas inclure de référence récursive.
  • Plusieurs références à la même expression de table commune dans la même clause FROM. De telles références ne sont pas autorisées dans une expression de table commune récursive.
  • Une référence récursive dans la clause FROM d’une sous-requête. Un cycle de récursivité ne peut pas être défini à l’aide d’une sous-requête.

Action du système :
L’instruction ne peut pas être traitée.

Réponse du programmeur :
Modifiez l’un des éléments suivants :

  • le fullselect avant l’opérateur union afin qu’il n’inclue pas de référence récursive.
  • la clause FROM contenant plusieurs références à la même expression de table commune à une seule référence.
  • la clause FROM de la sous-requête afin qu’elle ne fasse pas référence à l’expression de table commune.

SQLSTATE :
42836

CODE RETOUR -345

THE FULLSELECT OF THE RECURSIVE COMMON TABLE EXPRESSION name MUST BE A UNION ALL AND MUST NOT INCLUDE AGGREGATE FUNCTIONS, GROUP BY, HAVING, ORDER BY, OFFSET, FETCH FIRST, OR AN EXPLICIT JOIN INCLUDING AN ON CLAUSE

Explication :
Le nom de l’expression de table commune name inclut une référence à lui-même et donc :

  • doit être l’union de deux ou plusieurs fullselects.
  • ne peut pas avoir de fonctions d’agrégat.
  • ne peut pas inclure de clause GROUP BY.
  • ne peut pas inclure de clause HAVING.
  • ne peut pas inclure de clause ORDER BY.
  • ne peut pas inclure de clause OFFSET.
  • ne peut pas inclure de clause FETCH FIRST.
  • ne peut pas inclure une jointure explicite avec une clause ON.

Action du système :
L’instruction ne peut pas être traitée.

Réponse du programmeur :

Modifiez l’expression de table commune en :

  • ce qui en fait une union de deux ou plusieurs fullselects.
  • suppression de toutes les fonctions d’agrégat, clause GROUP BY, clause HAVING, clause ORDER BY, clause OFFSET, clause FETCH FIRST ou JOIN explicite incluant une clause ON.
  • suppression de la référence récursive.

SQLSTATE :
42836

CODE RETOUR -344

THE RECURSIVE COMMON TABLE EXPRESSION name HAS MISMATCHED DATA TYPES OR LENGTHS OR CODE PAGE FOR COLUMN column-name

Explication :
Le nom de l’expression de table commune récursive name a une colonne column-name qui est référencée dans la sélection complète itérative de l’expression de table commune. Le type de données et la longueur sont définis en fonction du fullselect d’initialisation pour cette colonne. Le résultat de l’expression pour la colonne column-name dans le fullselect itératif a un type de données ou une longueur différent qui peut entraîner l’échec de l’attribution de la valeur pour la colonne.

Action du système :
L’instruction ne peut pas être traitée.

Réponse du programmeur :
Corrigez la colonne utilisée dans les sélections complètes de l’expression de table commune récursive afin que la colonne d’initialisation corresponde aux colonnes itératives.

SQLSTATE :
42825