Tous les articles par Mr COBOL

CODE RETOUR -531

THE PRIMARY KEY IN A PARENT ROW CANNOT BE UPDATED BECAUSE IT HAS ONE OR MORE DEPENDENT ROWS IN A RELATIONSHIP nom-contrainte

Explication :

Une opération UPDATE tente de modifier la clé primaire d’une ligne alors que celle-ci possède des lignes dépendantes associées.

La valeur de clé primaire d’une ligne parent ne peut pas être modifiée si la ligne parent possède des lignes dépendantes.

Action système :

L’ordre UPDATE ne peut être exécuté. La table n’est pas modifiée.

Réponse programmeur :

Examiner la clé primaire de ta table à mettre à jour et la clé étrangère de la table dépendante afin de déterminer si la valeur de la clé primaire peut être modifiée. Si cet examen n’est pas concluant, vérifier le contenu des deux tables pour déterminer la cause du problème.

CODE RETOUR -530

THE INSERT OR UPDATE VALUE OF FOREIGN KEY nom-contrainte IS INVALID

Explication :

Une opération UPDATE ou INSERT tente de placer une valeur dans une clé étrangère qui n’existe pas comme valeur de clé primaire dans la table parent.

Lorsqu’une ligne est insérée dans une table dépendante, la valeur insérée dans la clé étrangère doit exister en tant que valeur de clé primaire pour une ligne de la table parent associée.

Lorsqu’une valeur de clé étrangère est modifiée, cette valeur doit exister en tant que valeur de clé primaire pour une ligne de la table parent associée.

Action système :

L’ordre UPDATE ou INSERT ne peut être exécuté. La table n’est pas modifiée.

Réponse programmeur :

Examiner d’abord les valeurs de la clé étrangère, puis les comparer avec les valeurs de la clé primaire de la table parent afin de déterminer la cause du problème.

CODE RETOUR -511

THE FOR UPDATE CLAUSE CANNOT BE SPECIFIED BECAUSE THE TABLE DESIGNATED BY THE CURSOR CANNOT BE MODIFIED

Explication :

La table résultante d’un ordre SELECT ne peut être mise à jour.

Causes possibles :

  • la clause FROM de l’ordre SELECT précise plusieurs tables ou vues;
  • la liste du SELECT contient une fonction ou le mot-clé DISTINCT;
  • l’ordre contient la clause ORDER BY, GROUP BY ou HAVING;
  • la vue précisée dans la clause FROM ne peut être mise à jour.

Action système :

L’ordre ne peut être exécuté. Le curseur reste indéfini pour le programme.

Réponse programmeur :

Les mises à jour ne peuvent être traitées sur la table résultante précisée. Se référer aux restrictions pour les opérations UPDATE sur les vues

CODE RETOUR -510

THE TABLE DESIGNATED BY THE CURSOR OF THE UPDATE OR DELETE STATEMENT CANNOT BE MODIFIED

Explication :

Le programme tente d’exécuter un ordre UPDATE ou DELETE WHERE CURRENT OF sur une table ou une vue qui ne peut être mise à jour. Ceci se produit pour un DELETE sur une vue read-only, ou pour un UPDATE sur un curseur non défini avec la clause FOR UPDATE OF.

Action système :

L’ordre ne peut être exécuté. Aucune mise à jour ou suppression n’est effectuée.

Réponse programmeur :

La demande d’UPDATE ou DELETE ne peut être traitée. Se référer aux restrictions pour les opérations UPDATE et DELETE sur les vues.

CODE RETOUR -509

THE TABLE IDENTIFIED IN THE UPDATE OR DELETE STATEMENT IS NOT THE SAME TABLE DESIGNATED BY THE CURSOR

Explication :

Le programme tente d’exécuter un ordre UPDATE ou DELETE WHERE CURRENT OF sur un nom de table qui ne correspond pas au nom désigné dans la déclaration du curseur.

Action système :

L’ordre ne peut être exécuté. Aucune mise à jour ou suppression n’est effectuée.

Réponse programmeur :

Corriger le programme en s’assurant que les noms de table identifiés dans les ordres UPDATE, DELETE et DECLARE CURSOR sont identiques.

CODE RETOUR -508

THE CURSOR IDENTIFIED IN THE UPDATE OR DELETE STATEMENT IS NOT POSITONNED ON A ROW

Explication :

Le programme tente d’exécuter un ordre UPDATE ou DELETE WHERE CURRENT OF sur un curseur alors que celui-ci n’est pas positionné sur une ligne de la table. Le curseur doit être positionné avant toute tentative de mise à jour ou suppression.

Note :

Le curseur ne reste pas positionné sur une ligne si celle-ci’ est détruite ou si une colonne index de cette ligne est modifiée par un autre curseur dans le même programme d’application.

Action système :

L’ordre ne peut être exécuté. Aucune mise à jour ou suppression n’est effectuée.

Réponse programmeur :

Corriger la logique du programme en s’assurant que le curseur est positionné correctement sur la ligne désirée avant toute opération d’UPDATE ou DELETE. Le curseur n’est pas positionné si le FETCH précédent a émis le code +100.

CODE RETOUR -507

THE CURSOR IDENTIFIED IN THE UPDATE OR DELETE STATEMENT IS NOT OPEN

Explication :

Le programme tente d’exécuter un ordre UPDATE ou DELETE WHERE CURRENT OF sur un curseur non ouvert.

Action système :

L’ordre ne peut être exécuté. Aucune mise à jour ou suppression n’est effectuée.

Réponse programmeur :

Rechercher un code retour SQL précédent qui a pu fermer le curseur. Les codes retour 404, -652, -679, -901, -904, -909. -910, -911 et -913 forcent la fermeture des curseurs. Après fermeture du curseur, tout ordre FETCH ou CLOSE reçoit le code -501, tout ordre UPDATE ou DELETE reçoit le code -507. Corriger la logique du programme en s’assurant que te curseur est bien ouvert lors de l’exécution d’un ordre UPDATE ou DELETE.

CODE RETOUR -504

THE CURSOR NAME nom-curseur IS NOT DEFINED

Explication :

Le curseur de nom ‘nom-curseur’ n’est pas déclaré dans le programme d’application avant d’être référencé.

Action système :

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

Réponse programmeur :

Vérifier le programme. La déclaration du curseur doit apparaître physiquement dans le programme avant tout ordre y faisant référence.

CODE RETOUR -503

A COLUMN CANNOT BE UPDATED BECAUSE IT IS NOT IDENTIFIED IN THE UPDATE CLAUSE OF THE SELECT STATEMENT OF THE CURSOR

Explication :

Le programme d’application tente une mise à jour par curseur d’une colonne de table non identifiée dans la clause FOR UPDATE OF de la déclaration du curseur. Toute colonne devant être mise à jour doit être déclarée dans la clause FOR UPDATE OF.

Action système :

L’ordre ne peut être exécuté. Aucune donnée n’est mise à jour dans la table.

Réponse programmeur :

Corriger le programme. Si la colonne doit être mise à jour, ajouter son nom dans la clause FOR UPDATE OF de la déclaration du curseur.

CODE RETOUR -502

THE CURSOR IDENTIFIED IN AN OPEN STATEMENT IS ALREADY OPEN

Explication :

Le programme d’application tente d’ouvrir un curseur déjà ouvert.

Action système :

L’ordre ne peut être exécuté. Le curseur reste inchangé, il n’est pas réouvert.

Réponse programmeur :

Corriger la logique du programme en s’assurant qu’il n’essaie pas d’exécuter un ordre OPEN alors que le curseur est déjà ouvert.