Tous les articles par Mr COBOL

SPITAB 63

Explication du SPITAB 63 :

Violation de la règle d’intégrité référentielle sous DB2.

Au cours d’une tentative de suppression de poste d’une table DB2, l’accesseur SPITAB a rencontré un code SQL spécifiant une violation de la règle d’intégrité de DB2 (SQL code égal à –530)

CODE RETOUR -797

THE TRIGGER trigger-name IS DEFINED WITH AN UNSUPPORTED TRIGGERED SQL STATEMENT

Explication :
La définition du déclencheur inclut une instruction SQL déclenchée non prise en charge. Les instructions SQL autorisées en tant qu’instructions SQL déclenchées sont définies dans la rubrique de déclencheur CREATE TRIGGER (de base ou avancée) appropriée. Les fragments de syntaxe SQL-trigger-body et trigger-SQL-statement, ainsi que les descriptions associées, documentent des règles supplémentaires sur ce qui est autorisé dans le corps d’un déclencheur.

Action du système :
L’instruction CREATE TRIGGER ne peut pas être exécutée et le déclencheur n’est pas créé.

Réponse du programmeur :
Vérifiez les instructions SQL déclenchées dans le déclencheur pour toute instruction qui n’est pas répertoriée dans CREATE TRIGGER (basic) ou SQL-procedure-statement, et supprimez l’instruction.

SQLSTATE :
42987

CODE RETOUR -798

A VALUE CANNOT BE SPECIFIED FOR COLUMN column-name WHICH IS DEFINED AS GENERATED ALWAYS

Explication :
Lors de l’insertion ou de la mise à jour d’une ligne dans une table, une valeur a été spécifiée pour une colonne définie avec les attributs GENERATED ALWAYS, sa valeur n’est pas définie avec le mot clé DEFAULT et :

  • Les valeurs de variable d’indicateur étendu ne sont pas activées.
  • Les valeurs de variable d’indicateur étendu sont activées, mais aucune des valeurs attendues DEFAULT (-5) ou UNASSIGNED (-7) n’a été fournie.

column-name
Le nom de la colonne.

Les colonnes GENERATED ALWAYS ne doivent pas être spécifiées dans la liste de colonnes pour une opération d’insertion ou dans la clause SET pour une opération de mise à jour, sauf si le mot-clé DEFAULT est spécifié.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Supprimez la colonne de la liste des colonnes ou de la clause SET, ou spécifiez DEFAULT comme valeur de colonne.

Vous pouvez utiliser la clause OVERRIDING USER VALUE dans une instruction INSERT comme solution possible à cette situation.

SQLSTATE :
428C9

CODE RETOUR -785

USE OF SQLCODE OR SQLSTATE IS NOT VALID

Explication :
L’utilisation de SQLCODE ou SQLSTATE dans un corps de routine SQL n’est pas valide pour l’une des raisons suivantes :

  • SQLCODE ou SQLSTATE a été spécifié comme nom de paramètre.
  • SQLCODE n’est pas déclaré en tant que INTEGER dans une clause de déclaration de codes de retour.
  • SQLSTATE n’est pas déclaré en tant que CHAR(5) dans une clause de déclaration de codes de retour.
  • SQLCODE ou SQLSTATE reçoit la valeur NULL.

Action du système :
La déclaration ne peut pas être traitée.

Réponse de l’utilisateur :
Corrigez la liste des paramètres, la déclaration d’une variable SQLCODE ou SQLSTATE, ou corrigez l’affectation d’une valeur à une variable SQLCODE ou SQLSTATE.

SQLSTATE :
428D8

CODE RETOUR -787

RESIGNAL STATEMENT ISSUED OUTSIDE OF A HANDLER

Explication :
L’instruction RESIGNAL, spécifiée dans une procédure SQL, doit être spécifiée à l’intérieur d’un gestionnaire.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Supprimez l’instruction RESIGNAL ou utilisez une instruction SIGNAL. Réessayez la demande.

SQLSTATE :
0K000

CODE RETOUR -788

THE SAME ROW OF TARGET TABLE table-name WAS IDENTIFIED MORE THAN ONCE FOR AN UPDATE, DELETE, OR CHANGE OPERATION OF THE MERGE STATEMENT

Explication :
La condition de recherche ON de l’instruction MERGE correspondait à une seule ligne de la table cible avec plusieurs lignes de la référence de table source. Cela peut entraîner plusieurs opérations sur la ligne cible avec une opération de mise à jour ou de suppression, ce qui n’est pas autorisé.

table-name
Nom de la table cible de l’instruction MERGE.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Effectuez l’une des actions suivantes :

  • Corrigez la condition de recherche pour vous assurer que chaque ligne de la table cible correspond à une seule ligne de la table source.
  • Agrégez les lignes de la table source qui correspondent à la ligne de la table cible à l’aide des fonctions GROUP BY.
  • Utilisez l’expression OLAP ROW_NUMBER() pour générer des lignes uniques.

SQLSTATE :
21506

CODE RETOUR -789

THE DATA TYPE OR OTHER ATTRIBUTES FOR PARAMETER OR SQL VARIABLE name ARE NOT SUPPORTED IN THE ROUTINE

Explication :
Cette erreur est émise dans les situations suivantes :

  • Une valeur par défaut ne peut pas être spécifiée pour un paramètre de type ARRAY. Seul DEFAULT NULL peut être spécifié explicitement si nom-type-tableau est spécifié.
  • Un paramètre de table (TABLE LIKE) ne peut pas être spécifié lors de l’ajout ou du remplacement d’une version d’une procédure existante par une instruction CREATE OR REPLACE.

name 
Le nom du paramètre ou de la variable SQL.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Ne spécifiez pas de valeur par défaut pour un paramètre de type ARRAY.

Ne spécifiez pas de paramètre de table.

SQLSTATE :
429BB

CODE RETOUR -781

CONDITION condition-name IS NOT DEFINED OR THE DEFINITION IS NOT IN SCOPE

Explication :
Une condition a été spécifiée dans une déclaration de gestionnaire, une instruction SIGNAL ou RESIGNAL, mais soit la condition n’est pas définie dans la routine, soit la référence au nom de la condition n’est pas dans la portée de la déclaration du nom de la condition.

condition-name 
Le nom de la condition qui n’est pas définie.

Action du système :
La déclaration ne peut pas être traitée.

Réponse de l’utilisateur :
Définissez la condition à l’aide de l’instruction DECLARE CONDITION dans une instruction composée et vérifiez que la référence se trouve dans la même portée que la déclaration. Vous pouvez également supprimer la référence à la condition.

SQLSTATE :
42737

CODE RETOUR -782

A CONDITION OR SQLSTATE condition-value SPECIFIED IS NOT VALID

Explication :
Une routine SQL a spécifié une valeur de condition non valide.

condition-value
Soit une valeur de condition spécifique, qui est fournie en tant que valeur SQLSTATE, soit une valeur de condition générale, telle que SQLEXCEPTION, SQLWARNING ou NOT FOUND.

La condition ou la valeur SQLSTATE n’est pas valide pour l’une des raisons suivantes :

  • La déclaration de gestionnaire ou la déclaration de condition spécifie une valeur SQLSTATE qui n’est pas valide.
  • La condition ou la valeur SQLSTATE a déjà été spécifiée par un autre gestionnaire dans la même portée.
  • La condition ou SQLSTATE a été spécifié dans le même gestionnaire que SQLEXCEPTION, SQLWARNING ou NOT FOUND.

Action du système :
La déclaration ne peut pas être traitée.

Réponse de l’utilisateur :
Corrigez la condition ou la valeur SQLSTATE.

SQLSTATE :
428D7

CODE RETOUR -783

SELECT LIST FOR CURSOR cursor-name IN FOR STATEMENT IS NOT VALID. COLUMN column-name IS NOT UNIQUE

Explication :
La liste SELECT de l’instruction FOR doit contenir des noms de colonne uniques. La liste SELECT spécifiée contient des noms de colonne en double ou des expressions sans nom.
– Si deux noms de colonne sont identiques, le nom de la colonne est column-name.
– Si le problème est le résultat d’expressions sans nom, *N est renvoyé pour column-name.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Spécifiez des noms de colonne uniques dans la liste SELECT spécifiée dans l’instruction FOR.

SQLSTATE :
42738