Tous les articles par Mr COBOL

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

CODE RETOUR -336

THE SCALE OF THE DECIMAL NUMBER MUST BE ZERO

Explication :
Le nombre décimal est utilisé dans un contexte où l’échelle doit être zéro. Cela peut se produire lorsqu’un nombre décimal est spécifié dans une instruction CREATE ou ALTER SEQUENCE pour START WITH, INCREMENT BY, MINVALUE, MAXVALUE ou RESTART WITH.

Réponse du programmeur :
Modifiez le nombre décimal afin qu’il n’y ait pas de chiffres différents de zéro à droite de la virgule décimale.

SQLSTATE :
428FA