Tous les articles par Mr COBOL

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

CODE RETOUR -343

THE COLUMN NAMES ARE REQUIRED FOR THE RECURSIVE COMMON TABLE EXPRESSION name

Explication :
Le nom de l’expression name de table commune récursive doit inclure la spécification des noms de colonnes après l’identifiant de l’expression de table commune.

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

Réponse du programmeur :
Ajoutez des noms de colonne à la suite de l’identifiant des expressions de table communes.

SQLSTATE :
42908

CODE RETOUR -342

THE COMMON TABLE EXPRESSION name MUST NOT USE SELECT DISTINCT AND MUST USE UNION ALL BECAUSE IT IS RECURSIVE

Explication :
Il y a deux explications possibles:

  • Une sélection complète dans le nom de l’expression de table commune ne peut pas commencer par SELECT DISTINCT car l’expression de table commune est récursive.
  • Un fullselect dans le nom de l’expression de table commune a spécifié UNION au lieu de UNION ALL comme requis pour les expressions de table communes récursives.

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

Réponse du programmeur :
Supprimez le mot clé DISTINCT de l’expression de table commune, ajoutez le mot clé ALL après UNION ou supprimez la référence récursive dans l’expression de table commune.

SQLSTATE :
42925

CODE RETOUR -341

A CYCLIC REFERENCE EXISTS BETWEEN THE COMMON TABLE EXPRESSIONS name1 AND name2

Explication :
L’expression de table commune name1 fait référence à name2 dans une clause FROM dans son fullselect et name2 fait référence à name1 dans une clause FROM dans ses fullselects. De telles formes de références cycliques ne sont pas autorisées.

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

Réponse du programmeur :
Supprimez la référence cyclique de l’une des expressions de table communes.

SQLSTATE :
42835

CODE RETOUR -340

THE COMMON TABLE EXPRESSION name HAS THE SAME IDENTIFIER AS ANOTHER OCCURRENCE OF A COMMON TABLE EXPRESSION DEFINITION WITHIN THE SAME STATEMENT

Explication :
Le nom de l’expression de table commune name  est utilisé dans la définition de plusieurs expressions de table communes dans l’instruction. Le nom utilisé pour décrire une expression de table commune doit être unique dans la même instruction.

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

Réponse du programmeur :
Corrigez l’erreur en modifiant le nom de l’une des expressions de table communes.

SQLSTATE :
42726

CODE RETOUR -338

AN ON CLAUSE IS INVALID

Explication :
Une instruction contient une clause ON non valide. Les conditions pouvant provoquer cette erreur incluent, sans s’y limiter, les violations des exigences suivantes :

  • Pour une jointure complète, chaque expression du prédicat doit référencer uniquement des colonnes dans ses propres tables d’opérandes.
  • Pour une jointure complète, une colonne Unicode Db2 11 dans une table EBCDIC ne doit pas être référencée dans la condition de jointure.
  • Seules les fonctions VALUE et COALESCE sont autorisées dans la clause ON pour les jointures externes complètes et les jointures complètes.
  • Les jointures externes complètes et les jointures complètes n’autorisent que l’opérateur =.
  • La clause ON ne peut pas contenir de sous-requête.
  • La clause ON ne peut pas contenir de prédicat XMLEXISTS.
  • La search-condition de la clause ON d’une instruction MERGE ne peut pas contenir de fonctions scalaires non déterministes.
  • Une sous-requête n’est pas autorisée dans la search-condition de la clause ON d’une instruction MERGE.

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

Réponse du programmeur :
Corrigez la syntaxe et réexécutez l’instruction.

SQLSTATE :
42972