Archives de catégorie : SQLCODE

CODE RETOUR -901

UNSUCCESSFUL EXECUTION CAUSED BY A SYSTEM ERROR THAT DOES NOT PRECLUDE THE SUCCESSFUL EXECUTION OF SUBSEQUENT SQL STATEMENTS

Explication :
Une erreur système s’est produite et a empêché l’exécution réussie de l’instruction SQL en cours.

accelerator-info
Message d’erreur renvoyé par le serveur accélérateur.
Si l’instruction SQL n’est pas une requête envoyée à un serveur accélérateur, les causes possibles de cette erreur incluent :

  • Longueur de l’instruction : la longueur de l’instruction SQL est inférieure à 0 ou supérieure à la longueur maximale autorisée pour une instruction.
  • Traitement de validation distribué : le traitement de validation distribué a rencontré une erreur. Tous les serveurs de l’unité d’oeuvre prenant en charge la validation en deux phases distribuée renvoient l’unité d’oeuvre. Si un serveur qui ne prend pas en charge la validation en deux phases distribuée a des mises à jour dans l’unité d’oeuvre, ce serveur doit être interrogé pour déterminer si ses mises à jour ont été validées ou annulées.
  • Travail de post-traitement incomplet : la transaction est abandonnée et la validation a échoué. Les causes typiques d’un post-traitement incomplet incluent :
    • Une mise à jour qui modifie la partition d’une ligne
    • La disponibilité des ressources
    • L’existence de curseurs maintenus
    • Violations des contraintes d’unicité

Si l’instruction SQL est une requête qui a été envoyée à un serveur accélérateur, l’erreur est renvoyée car le serveur accélérateur n’a pas pu exécuter la requête.

Action du système :
La déclaration ne peut pas être traitée. Une fin anormale X’04E’ peut être demandée pour l’application. Le programme d’application peut avoir une routine de récupération pour récupérer d’une telle fin anormale et peut réessayer des instructions SQL.

L’erreur n’empêche pas l’exécution réussie d’autres instructions SQL.

Réponse du programmeur :
Si une fin anormale s’est produite, informez le programmeur système pour qu’il analyse la fin anormale qui a provoqué ce code retour. Même si une fin anormale s’est produite, un programme d’application recevant ce code retour peut réessayer et il n’est pas interdit d’exécuter d’autres instructions SQL.

Si l’erreur s’est produite lors d’une validation, examinez toutes les informations détaillées sur l’indisponibilité des ressources publiées sur la console de l’opérateur système ou dans le journal des travaux de l’espace d’adressage des services système (ssnmMSTR) pour déterminer si un problème d’indisponibilité des ressources a empêché la fin du post-traitement de la validation.

Si l’erreur s’est produite pour une requête envoyée à un serveur accélérateur, vérifiez si l’instruction SQL contient une erreur logique. Un exemple d’erreur logique dans une instruction SQL est une opération de division qui se traduit par une division par 0. Si vous déterminez que votre application n’est pas la source de l’erreur, contactez le support IBM® et indiquez la valeur accelerator-info dans le jeton.

SQLSTATE :
58004

CODE RETOUR -902

POINTER TO THE ESSENTIAL CONTROL BLOCK (CT/RDA) HAS VALUE 0, REBIND REQUIRED

Explication :
Le pointeur vers le bloc de contrôle essentiel, soit le CT ou le RDA, est des zéros. Cela empêche l’exécution réussie de l’instruction SQL en cours, ainsi que de toutes les instructions SQL ultérieures.

Action du système :
La déclaration ne peut pas être traitée. Le programme d’application n’est pas autorisé à émettre des instructions SQL supplémentaires. Par exemple, une routine de récupération associée au programme d’application peut ne pas émettre d’instructions SQL supplémentaires.

Réponse du programmeur :
Reconnectez le programme d’application défaillant et réessayez. Si le problème persiste, examinez votre DBRM et assurez-vous qu’il correspond à votre programme.

SQLSTATE :
58005

CODE RETOUR -908

bind-type ERROR USING auth-id AUTHORITY. BIND, REBIND OR AUTO-REBIND OPERATION IS NOT ALLOWED

Explication :
Pour BIND et REBIND, l’ID d’autorisation indiqué n’est pas autorisé à effectuer le type de liaison bind-type indiqué sur un plan ou un package. Une entrée dans la table de spécification de limite de ressources (RLST) interdit la liaison et la reliaison par cet ID d’autorisation ou par tous les ID d’autorisation. Pour AUTO-REBIND, le paramètre système contrôlant les opérations AUTO-REBIND est défini pour interdire AUTO-REBIND.

bind-type
Type d’opération de liaison (BIND, REBIND ou AUTO-REBIND).

auth-id
ID d’autorisation de l’appelant de la sous-commande BIND ou ID d’autorisation principal de l’appelant du plan pour les opérations AUTO-REBIND.

Action du système :
Le plan ou le forfait n’est pas lié.

Réponse du programmeur système :
Si l’ID d’autorisation indiqué doit être autorisé à se lier, modifiez l’entrée dans la table RLST active. Si les opérations AUTO-REBIND sont désactivées, reliez à nouveau le package avant de réexécuter le package.

SQLSTATE :
23510

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 -784

CONSTRAINT constraint-name CANNOT BE DROPPED.

Explication :
Une contrainte générée implicitement lorsqu’une période BUSINESS_TIME est définie ne peut pas être supprimée à l’aide d’une instruction ALTER TABLE avec une clause DROP CHECK ou DROP CONSTRAINT.

constraint-name
Le nom de la contrainte qui ne peut pas être supprimée.

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

Réponse de l’utilisateur :
Aucune action n’est requise.

SQLSTATE :
42860