Tous les articles par Mr COBOL

CODE RETOUR -501

THE CURSOR IDENTIFIED IN A FETCH OR CLOSE STATEMENT IS NOT OPEN

Explication :

Le programme d’application tente d’exécuter un ordre FETCH ou CLOSE sur un curseur. alors que celui-ci n’est pas ouvert.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Rechercher un code retour SQL précédent qui a pu fermer le curseur. Les opérations de COMMIT et ROLLBACK ferment tous tes curseurs actifs. Les codes retour -404, -652, -679, – 901, -904, -909, -910, -911 et -913 forcent la fermeture des curseurs. Si aucun code retour précédent n’a été émis, corriger la logique du programme en s’assurant que le curseur est ouvert lors de l’exécution de l’ordre FETCH ou CLOSE.

CODE RETOUR -421

THE OPERANDS OF AUNION OR UNION ALL DO NOT HAVE THE SAME NUMBER OF COLUMNS

Explication :

Les opérandes d’un ordre UNION ou UNION ALL doivent avoir le même nombre de colonnes.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Corriger l’ordre SQL pour que le nombre de colonnes soit identique sur chaque opérande.

CODE RETOUR -419

THE DECIMAL DIVIDE OPERATION IS INVALID BECAUSE THE RESULT WOULD HAVE A NEGATIVE SCALE

Explication :

La division décimale est invalide car elle résulte en une échelle négative. La formule interne utilisée pour calculer l’échelle d’un résultat de division décimale est :

échelle résultat = 15-np+ns-ds,

avec ‘np’ : précision du numérateur, ‘ns’ : échelle du ‘ numérateur, et ‘ds’ : échelle du dénominateur.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Examiner la précision et l’échelle de toutes les colonnes participant à la division. Noter qu’une valeur INTEGER ou SMALLINT peut être convertie en DECIMAL pour ce calcul.

CODE RETOUR -418

A STATEMENT STRING TO BE PREPARED CONTAINS AN INVALID USE OF PARAMETER MARKERS

Explication :

Les paramètres de séparation ne peuvent pas être utilisés sur la liste d’un ordre SELECT, comme seul argument d’une fonction scalaire, ou dans une opération de concaténation. Ils ne peuvent pas être utilisés dans une expression d’un ordre SQL EXECUTE IMMEDIATE.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Corriger la logique du programme pour que cette erreur disparaisse. Se reporter aux contraintes d’utilisation du paramètre de séparation des ordres SQL préparés.

CODE RETOUR -417

A STATEMENT STRING TO BE PREPARED INCLUDES PARAMETER MARKERS AS THE OPERANDS OF THE SAME OPERATOR

Explication :

La chaîne précisée comme objet d’un ordre PREPARE contient un prédicat ou une expression dans laquelle le paramètre de séparation est utilisé comme opérande du même opérateur (par exemple :?>?), cette syntaxe n’est pas permise.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Corriger la logique du programme pour que cette erreur de syntaxe disparaisse. Se reporter aux contraintes d’utilisation du paramètre de séparation des ordres SQL préparés.

CODE RETOUR -416

AN OPERAND OF UNION CONTAINS A LONG STRING COLUMN

Explication :

L’ordre UNION ne peut être traité car les tables participant à l’opération d’union contiennent une colonne de chaîne longue (par exemple, colonne de type VARCHAR de longueur supérieure à 254 caractères). Les opérandes d’un ordre UNION ne peuvent pas être des colonnes de chaîne longue.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Cette fonction n’est pas supportée par DB2. Se reporter aux restrictions de manipulation des colonnes de chaîne longue.

CODE RETOUR -415

THE CORRESPONDING COLUMNS, numéro-colonne, OF THE OPERANDS OF A UNION OR A UNION ALL DO NOT HAVE COMPARABLE COLUMN DESCRIPTIONS

Explication :

Les descriptions des colonnes des opérandes d’une opération UNION ou UNION ALL doivent être comparables. Les colonnes correspondant à la position ‘numéro-colonne’ ne respectent pas cette contrainte. Pour que ces colonnes soient comparables, elles doivent être du même type de donnée, et s’il existe une FIELDPROC, elle doit être la même pour toutes ces colonnes.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Contrôler les types de donnée pour les colonnes précisées, et corriger l’ordre UNION ou UNION ALL pour que les colonnes correspondantes soient comparables.

CODE RETOUR -414

THE NUMERIC OR DATETIME COLUMN nom-colonne IS SPECIFIED IN A LIKE PREDICAT

Explication :

La colonne précisée sur le prédicat LIKE est du type numérique ou DATE/TIME, alors que seuls les types caractère ou chaîne graphique sont autorisés.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Examiner la définition de la colonne précisée, et vérifier que le nom de cette colonne est correcte. Les colonnes de type numérique ou DATE/TIME ne peuvent apparaître comme opérandes d’un prédicat LIKE ou NOT LIKE.

CODE RETOUR -412

THE SELECT CLAUSE OF A SUBQUERY SPECIFIES MULTIPLE COLUMNS

Explication :

Dans le contexte d’utilisation de la sous-requête, celle-ci ne peut avoir qu’une seule colonne précisée sur la clause SELECT.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Corriger la syntaxe de l’ordre SQL en respectant les contraintes d’utilisation des sous-requêtes.

CODE RETOUR -411

THE CURRENT DATETIME, CURRENT SQLID OR USER KEYWORD CAN NOT BE USED AS SPECIFIED

Explication :

Le registre spécial CURRENT DATE/TIME, SQLID, ou USER apparaît dans un ordre SQL sous une forme incompatible avec le type de donnée utilisé :

  • CURRENT SQLID ou USER est du type CHAR(8).
  • CURRENT DATE est du type DATE.
  • CURRENT TIME est du type TIME.
  • CURRENT TIMESTAMP est du type TIMESTAMP.
  • CURRENT TIMEZONE est du type DECIMAL(6,0).

Le registre CURRENT SQLID est invalide sur un ordre SQL pour des données remote.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Examiner les attributs du type de donnée implicite pour déterminer l’erreur. Il peut être nécessaire de modifier la syntaxe de l’ordre SQL, ou la logique du programme.