Tous les articles par Mr COBOL

CODE RETOUR -399

INVALID VALUE ROWID WAS SPECIFIED

Explication :
Lors de l’insertion dans une table, une valeur spécifiée pour une colonne ROWID n’était pas valide. Seules les valeurs d’ID de ligne précédemment générées par Db2 sont valides.

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

Réponse du programmeur système :
N’essayez pas de générer une valeur dans une colonne ROWID. L’insertion dans les colonnes ROWID est prise en charge à des fins de propagation des données, où Db2 a précédemment généré les valeurs d’ID de ligne. Seules les valeurs d’ID de ligne précédemment générées par Db2 peuvent être utilisées comme valeurs à insérer dans une colonne d’ID de ligne. Vous pouvez également insérer la ligne spécifiant DEFAULT pour la colonne ROWID ou supprimer la colonne ROWID de la liste de colonnes d’insertion.

Vous pouvez également utiliser la clause OVERRIDING comme solution possible à cette situation. Pour plus d’informations sur la clause OVERRIDING USER VALUE, consultez INSERT.

SQLSTATE :
22511

CODE RETOUR -398

A LOCATOR WAS REQUESTED FOR HOST VARIABLE NUMBER position-number BUT THE VARIABLE IS NOT A LOB

Explication :
L’application a demandé qu’un localisateur soit renvoyé à partir de la variable hôte position-number. Un localisateur ne peut être utilisé qu’avec des données LOB, et les données demandées ne sont pas un LOB.

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

Réponse du programmeur :
Modifiez l’instruction pour qu’elle renvoie des données LOB ou modifiez la variable hôte cible pour qu’elle ne soit pas un localisateur.

SQLSTATE :
428D2

CODE RETOUR -397

GENERATED IS SPECIFIED AS PART OF A COLUMN DEFINITION, BUT IT IS NOT VALID FOR THE DEFINITION OF THE COLUMN

Explication :
Dans une instruction CREATE TABLE ou ALTER TABLE, GENERATED a été spécifié pour un type de colonne qui ne prend pas en charge les valeurs générées. GENERATED ne peut être spécifié que pour une colonne avec l’un des types de données suivants :

  • ID de ligne
  • Type distinct basé sur un ID de ligne
  • Horodatage du changement de ligne
  • Colonne Identité
  • Colonne de début de ligne
  • Colonne de fin de ligne
  • Colonne ID de début de transaction
  • Colonne d’expression générée

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

Réponse du programmeur :
Corrigez l’énoncé. Supprimez la clause GENERATED ou remplacez la définition de la colonne par l’un des types pouvant être générés.

SQLSTATE :
428D3

CODE RETOUR -396

object-type object-name ATTEMPTED TO EXECUTE AN SQL STATEMENT DURING FINAL CALL PROCESSING

Explication :
Une fonction définie par l’utilisateur nommée object-name a été invoquée et a tenté d’exécuter une instruction SQL (autre que CLOSE CURSOR) pendant le traitement de l’appel final, mais l’instruction n’est pas autorisée.

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

Réponse du programmeur :
Modifiez la définition de la fonction pour ne pas émettre d’instructions SQL lors du traitement de l’appel final.

SQLSTATE :
38505

CODE RETOUR -393

THE CONDITION OR CONNECTION NUMBER IS INVALID

Explication :
La valeur du numéro CONDITION ou CONNECTION qui a été spécifié dans l’instruction GET DIAGNOSTICS est soit inférieure à zéro, soit supérieure au nombre de diagnostics disponibles.

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

Réponse du programmeur :
Corrigez la valeur du numéro CONDITION ou CONNECTION, en vous assurant que le numéro est compris entre 1 et la valeur de l’information instruction NUMBER ou GET DIAGNOSTICS. Soumettez à nouveau l’instruction GET DIAGNOSTICS CONDITION ou GET DIAGNOSTICS CONNECTION.

SQLSTATE :
35000

CODE RETOUR -392

SQLDA PROVIDED FOR CURSOR cursor-name HAS BEEN CHANGED FROM THE PREVIOUS FETCH (reason-code)

Explication :
L’application a demandé des retours incompatibles d’instructions FETCH successives.

cursor-name
Le nom du curseur.
reason-code
Une valeur numérique qui indique la raison de l’échec. Les valeurs possibles sont :

1

L’application s’exécute avec des règles DB2 et a demandé que les données LOB soient renvoyées en tant que LOB dans une instruction FETCH et en tant que localisateur dans une autre instruction FETCH. Cette demande n’est pas autorisée.

2

L’application a demandé du XML textuel dans une instruction FETCH et du XML binaire dans une autre instruction FETCH. Cette demande n’est pas autorisée.

Si le curseur est un jeu de résultats renvoyé par une procédure stockée appelée par l’application, l’erreur d’application peut résulter d’une non-concordance avec le dernier FETCH effectué par la procédure stockée.

Action du système :
L’instruction n’est pas traitée et la connexion est interrompue.

Réponse du programmeur :
Effectuez l’action qui correspond à la valeur du reason-code :

1

Pour une incompatibilité impliquant LOB et le localisateur : Soit n’utilisez pas de règles DB2, soit modifiez l’application afin qu’elle ne modifie pas le code de type de données de LOB en localisateur (ou l’inverse) dans la SQLDA entre les extractions successives.

2

En cas de non-concordance entre XML textuel et XML binaire : modifiez l’application pour demander des données XML textuelles dans des extractions successives, ou pour demander des données XML binaires dans des extractions successives.

SQLSTATE :
42855

CODE RETOUR -390

OBJECT object-name, SPECIFIC NAME specific-name, IS NOT VALID IN THE CONTEXT WHERE IT IS USED

Explication :
L’une des situations suivantes s’est produite :

  • Une fonction résolue en une fonction spécifique qui n’est pas valide dans le contexte où elle est utilisée.
  • UNNEST a été utilisé dans un contexte où il n’est pas autorisé.

object-name
Le nom de l’objet.
specific-name
Le nom spécifique. Si specific-name est une chaîne vide, la fonction est résolue en fonction intégrée identifiée par function-name.
Si l’erreur concerne une utilisation non valide de UNNEST, le specific-name est *N.

Les causes possibles de cette erreur incluent :

  • Une fonction scalaire ou d’agrégat est référencée là où seule une fonction de table est autorisée (comme dans la clause FROM d’une requête).
  • Une fonction de table est référencée là où seule une fonction scalaire ou d’agrégat est autorisée (comme dans une expression).
  • Une fonction est référencée dans une clause SOURCE d’une instruction CREATE FUNCTION, mais une fonction source ne peut pas être définie sur cette fonction (ou sur cette signature de fonction spécifique).
  • La fonction XMLMODIFY est référencée là où elle n’est pas l’expression la plus élevée à droite de la clause d’affectation SET dans une mise à jour.
  • Une fonction de table générique est référencée, mais une typed-correlation-clause n’est pas spécifiée.
  • Une clause typed-correlation-clause est spécifiée, mais la fonction référencée n’est pas une fonction de table générique.
  • UNNEST a été spécifié dans un contexte non pris en charge.
  • Une fonction définie CORRELATION, COVARIANCE, COVARIANCE_SAMP ou ARRAY_AGG est référencée lorsqu’une clause CUBE, ROLLUP ou GROUPING SETS existe dans la même instruction SQL.
  • ARRAY_AGG ou LISTAGG est référencé dans un fullselect qui inclut une clause ORDER BY ou une clause DISTINCT.

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

Réponse du programmeur :
Pour une fonction, assurez-vous que le nom de fonction et les arguments corrects sont spécifiés et que le chemin SQL inclut le schéma dans lequel la fonction correcte est définie. Vous devrez peut-être modifier le nom de la fonction, les arguments ou le chemin SQL (à l’aide de SET CURRENT PATH ou de l’option de liaison PATH), ou modifier le contexte dans lequel la fonction est utilisée.

SQLSTATE :
42887

CODE RETOUR -374

THE CLAUSE clause HAS NOT BEEN SPECIFIED IN THE CREATE OR ALTER FUNCTION STATEMENT FOR LANGUAGE SQL FUNCTION function-name BUT AN EXAMINATION OF THE FUNCTION BODY REVEALS THAT IT SHOULD BE SPECIFIED

Explication :

Ce message peut être émis si les conditions suivantes s’appliquent :

  • Vous devez spécifier NOT DETERMINISTIC si l’une des conditions suivantes s’applique dans le corps de la fonction :
    • Db2 appelle une fonction dont l’attribut NOT DETERMINISTIC est spécifié.
    • Db2 accède à un registre spécial.
  • Vous devez spécifier MODIFIES SQL DATA si le corps de la fonction définie avec LANGUAGE SQL peut modifier des données SQL ou s’il appelle une fonction ou une procédure pouvant modifier des données SQL.
  • Vous devez spécifier READS SQL DATA si le corps de la fonction définie avec LANGUAGE SQL contient une sous-sélection, ou s’il appelle une fonction qui peut lire des données SQL.
  • Vous devez spécifier EXTERNAL ACTION si le corps de la fonction définie avec LANGUAGE SQL appelle une fonction pour laquelle l’attribut EXTERNAL ACTION est spécifié.

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

Réponse du programmeur :
Spécifiez la clause correcte ou modifiez la fonction du corps.

SQLSTATE :
428C2

CODE RETOUR -373

DEFAULT CANNOT BE SPECIFIED FOR COLUMN OR SQL VARIABLE name

Explication :
La définition ou la modification spécifiée pour la colonne ou la variable SQL incluait la clause DEFAULT. Cependant, DEFAULT n’est pas pris en charge pour le type de données de colonne ou la variable SQL.

name
Le nom de la colonne ou de la variable SQL.

Les raisons possibles de cette erreur incluent les situations suivantes :

  • Une instruction CREATE TABLE ou ALTER TABLE a tenté de définir l’une des colonnes suivantes avec la clause DEFAULT :
  1. Colonne Identité
  2. Colonne ROWID
  3. colonne XML
  4. Colonne d’horodatage du changement de ligne
  5. Colonne Étiquette de sécurité
  6. Colonne de début de ligne
  7. Colonne de fin de ligne
  8. Colonne ID de début de transaction
  9. Colonne d’expression générée
  • La déclaration d’une variable SQL a spécifié la clause DEFAULT et le type de données de la variable SQL est ROWID ou XML.
  • Une instruction SET a spécifié DEFAULT pour la valeur d’une colonne ROWID.

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

Réponse du programmeur :
Supprimez la clause DEFAULT et soumettez à nouveau l’instruction.

SQLSTATE :
42623

CODE RETOUR -372

ONLY ONE ROWID, IDENTITY, ROW CHANGE TIMESTAMP, ROW BEGIN, ROW END, TRANSACTION START ID, SECURITY LABEL, OR DATA CHANGE OPERATION COLUMN IS ALLOWED IN A TABLE

Explication :
Tentative de modification ou de création d’une table pour avoir deux colonnes du même type alors qu’une seule colonne de ce type est autorisée dans une table.

Un tableau ne peut pas avoir deux colonnes ou plus des types suivants :

  • ROWID créé explicitement
  • ROWID implicitement caché
  • Identité
  • ROW CHANGE TIMESTAMP
  • ROW BEGIN
  • ROW END
  • TRANSACTION START ID
  • Étiquette de sécurité
  • DATA CHANGE OPERATION

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

Réponse du programmeur :
Pour une instruction CREATE TABLE, sélectionnez une seule colonne pour avoir l’attribut spécifié.

Pour une instruction ALTER TABLE, une colonne avec l’un des types spécifiés existe déjà pour la table. N’essayez pas d’ajouter une autre colonne avec le même type de données.

SQLSTATE :
428C1