Archives de catégorie : SQLCODE

CODE RETOUR -444

USER PROGRAM name COULD NOT BE FOUND

Explication
Db2 a reçu une instruction SQL CALL pour une procédure stockée ou une instruction SQL contenant un appel d’une fonction définie par l’utilisateur et a trouvé la ligne dans la table de catalogue SYSIBM.SYSROUTINES associée au nom de procédure demandé. Cependant, le module de chargement MVS identifié dans la colonne EXTERNAL_NAME de la ligne SYSIBM.SYSROUTINES est introuvable.

name

Le nom du module de chargement MVS introuvable

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

Réponse du programmeur
Si la valeur de la colonne EXTERNAL_NAME dans la table SYSIBM.SYSROUTINES est incorrecte, utilisez l’instruction ALTER FUNCTION ou ALTER PROCEDURE pour corriger la valeur.

Si la valeur de la colonne EXTERNAL_NAME est correcte, utilisez l’éditeur de liens MVS pour créer le module de chargement MVS requis dans l’une des bibliothèques de chargement MVS utilisées par votre installation pour les procédures stockées.

Cette erreur peut également se produire si vous appelez une procédure stockée gérée par WLM qui n’est pas autorisée par APF et que les bibliothèques de chargement Db2 ne sont pas dans la concaténation STEPLIB car elles sont chargées à partir de LINKLIST. Dans ce cas, si vous souhaitez que le programme de procédure stockée s’exécute avec autorisation APF, éditez-le avec AC=1 dans une bibliothèque autorisée MVS APF. Si vous ne souhaitez pas que le programme de procédure stockée exécute l’APF autorisé, ajoutez la bibliothèque de chargement Db2 à la concaténation STEPLIB du JCL utilisé pour démarrer l’espace adresse géré par WLM.

SQLSTATE
42724

CODE RETOUR -443

ROUTINE routine-name (SPECIFIC NAME specific-name) HAS RETURNED AN ERROR SQLSTATE WITH DIAGNOSTIC TEXT msg-text

Explication
Un SQLSTATE a été renvoyé par la routine routine-name, avec le texte du message  msg-text.

Action du système
L’exécution de l’instruction SQL est terminée.

Réponse du programmeur
Contactez l’auteur de la routine ou votre administrateur de base de données. Tant que le problème n’est pas résolu, la routine ne doit pas être utilisée.

SQLSTATE
xxxxx (le SQLSTATE qui a été renvoyé par la routine).

CODE RETOUR -441

INVALID USE OF ‘DISTINCT’ OR ‘ALL’ WITH FUNCTION function-name

Explication
Cette erreur peut se produire dans les situations suivantes :

  • Le mot clé DISTINCT ou ALL a été détecté entre parenthèses dans une référence à la fonction function-name et la fonction a été résolue en tant que fonction scalaire. L’utilisation des mots clés DISTINCT ou ALL avec la fonction scalaire spécifiée n’est pas valide.
  • Le mot clé DISTINCT a été détecté entre parenthèses dans une référence à la fonction function-name et la fonction a été résolue en tant que fonction d’agrégat. L’utilisation des mots clés DISTINCT avec la fonction d’agrégation spécifiée n’est pas valide.
  • La fonction devait être une fonction d’agrégat prenant en charge le mot clé ALL ou DISTINCT, mais la fonction qui a été résolue n’est pas une fonction d’agrégat.

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

Réponse du programmeur
Prenez les mesures appropriées :

  • Si une fonction scalaire est utilisée, supprimez le mot-clé DISTINCT ou ALL.
  • Si la fonction est une fonction d’agrégat qui ne prend pas en charge les mots clés DISTINCT ou ALL, supprimez le mot clé.
  • Sinon, si une fonction d’agrégat est utilisée, il y a alors un problème avec la résolution de la fonction. Vérifiez votre chemin SQL pour voir si la fonction est dans l’un des schémas, et vérifiez également le catalogue SYSIBM.SYSROUTINES pour l’orthographe du nom de la fonction et le nombre et les types de paramètres.

SQLSTATE
42601

CODE RETOUR -440

NO AUTHORIZED routine-type BY THE NAME routine-name HAVING COMPATIBLE ARGUMENTS WAS FOUND

Explication
Une tentative d’appel d’une routine a été effectuée, mais Db2 n’a pas pu résoudre l’appel d’une routine, y compris la liste d’arguments, en une définition de routine spécifique.

routine-type
Le type de routine, comme FUNCTION ou PROCEDURE.
routine-name or schema-name.routine-name
Le nom de la routine. Si l’instruction d’origine fait référence à un nom qualifié, le nom de la routine dans le texte du message est qualifié par le nom du schéma.

Les causes possibles de cette erreur incluent :

  • Le nom de la routine a été spécifié de manière incorrecte ou n’existe pas dans la base de données.
  • Une référence qualifiée a été utilisée et le qualificateur de schéma a été spécifié de manière incorrecte.
  • Le chemin SQL de l’utilisateur ne contient pas le schéma auquel appartient la fonction et une référence non qualifiée a été utilisée.
  • Le mauvais nombre d’arguments a été inclus.
  • Le bon nombre d’arguments a été inclus dans la référence de routine, mais le type de données d’un ou plusieurs des arguments est incorrect.
  • L’invocateur de la routine n’est pas autorisé à exécuter la routine.
  • CURRENT QUERY ACCELERATION a été défini sur NONE pendant l’exécution d’une expression intermédiaire uniquement.
  • Une application ou un objet SQL a tenté d’utiliser une fonctionnalité qui n’est pas prise en charge par le niveau de compatibilité d’application actuel.
    • Avant l’activation du niveau de fonction 500 ou supérieur, les environnements Db2 doivent utiliser les niveaux de compatibilité des applications des versions précédentes. Après l’activation du niveau de fonction 500 ou supérieur, le niveau de compatibilité des applications peut être équivalent au niveau de fonction actuel, un niveau de fonction inférieur dans la version actuelle ou un niveau de fonction d’une version précédente.

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

Réponse du programmeur
Utilisez le nom de routine identifié dans le message pour trouver l’appel et vérifiez que l’appel peut être résolu en la routine prévue, en fonction des processus de résolution de fonction et de procédure.

Pour vous assurer que la routine prévue est appelée, spécifiez un nom de routine qualifié dans la mesure du possible.
Si vous exécutez une expression intermédiaire uniquement, définissez CURRENT QUERY ACCELERATION sur ELIGIBLE, ENABLE ou ALL.

Si l’erreur peut être due à une fonctionnalité non prise en charge, vérifiez le niveau de compatibilité d’application de votre application ou objet SQL et effectuez l’une des actions suivantes :

  • Reliez l’application ou modifiez l’objet SQL pour utiliser un niveau de compatibilité d’application qui prend en charge la fonctionnalité.
  • Supprimez l’utilisation de la fonctionnalité non prise en charge de l’application ou de l’objet SQL.

SQLSTATE
42884

CODE RETOUR -438

APPLICATION RAISED ERROR WITH DIAGNOSTIC TEXT: text

Explication
Cette erreur s’est produite en raison de la fonction RAISE_ERROR, d’une instruction RESIGNAL, d’une instruction SIGNAL SQLSTATE ou d’une condition non gérée lors du traitement du déclencheur ou de la routine terminé.

text

Texte de diagnostic fourni par l’invocation de la fonction RAISE_ERROR ou de l’instruction SIGNAL SQLSTATE.

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

Réponse du programmeur
Utilisez le texte de diagnostic fourni par l’application, le cas échéant, pour déterminer la cause de l’erreur.

SQLSTATE
Défini par l’application

CODE RETOUR -435

AN INVALID SQLSTATE sqlstate IS SPECIFIED IN A RAISE_ERROR FUNCTION, RESIGNAL STATEMENT, OR SIGNAL STATEMENT

Explication
Le SQLSTATE spécifié dans la fonction RAISE_ERROR, l’instruction RESIGNAL ou l’instruction SIGNAL d’un déclencheur ou d’une routine n’est pas conforme aux règles d’un SQLSTATE valide.

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

Réponse du programmeur
Modifiez le SQLSTATE spécifié dans la fonction RAISE_ERROR, l’instruction RESIGNAL ou l’instruction SIGNAL afin qu’il soit conforme aux règles de l’instruction.

Pour la fonction RAISE_ERROR, le SQLSTATE doit être une chaîne de caractères contenant exactement cinq (5) caractères. Il doit être de type CHAR défini avec une longueur de cinq (5), ou d’un type VARCHAR défini avec une longueur de cinq (5) ou plus. La valeur SQLSTATE doit être conforme aux règles suivantes :

  • Chaque caractère doit appartenir à l’ensemble des chiffres (‘0’ à ‘9’) ou des lettres majuscules non accentuées (‘A’ à ‘Z’).
  • La classe SQLSTATE (les deux premiers caractères) ne peut pas être ’00’, ’01’ ou ’02’ car ces caractères n’indiquent pas les classes d’erreur.
  • Si la classe SQLSTATE (les deux premiers caractères) commence par le caractère ‘0’ à ‘6’ ou ‘A’ à ‘H’, alors la sous-classe (les trois derniers caractères) doit commencer par une lettre dans la plage ‘I’ à ‘Z’.
  • Si la classe SQLSTATE (les deux premiers caractères) commence par le caractère ‘7’, ‘8’, ‘9’ ou ‘I’ à ‘Z’, alors la sous-classe (les trois derniers caractères) doit provenir de l’ensemble de caractères ‘0’ à ‘9’ ou ‘A’ à ‘Z’.

Pour les instructions RESIGNAL et SIGNAL, la valeur SQLSTATE doit être exactement de cinq (5) caractères qui suivent les règles suivantes :
Chaque caractère doit faire partie de l’ensemble de chiffres « 0 » à « 9 » ou de la lettre majuscule non accentuée « A » à « Z ».
La classe SQLSTATE (les deux premiers caractères) ne peut pas être ’00’ car elle représente un achèvement réussi.

SQLSTATE
428B3

CODE RETOUR -433

VALUE value IS TOO LONG

Explication
La valeur value nécessitait une troncature par une fonction de distribution ou d’ajustement du système (intégrée), qui était appelée pour transformer la valeur d’une manière ou d’une autre. La troncature n’est pas autorisée lorsque cette valeur est utilisée. La valeur transformée est l’une des suivantes :

  • un argument à une fonction définie par l’utilisateur (UDF)
  • une entrée dans la clause SET d’une instruction UPDATE
  • une valeur en cours d’INSERTION dans une table
  • une entrée à une fonction de distribution ou d’ajustement dans un autre contexte.

Si value a le sous-type ‘for bit data’, ou a un type de données BINARY ou VARBINARY, alors value est imprimée sous forme de chaîne hexadécimale entre guillemets suivie d’un X.

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

Réponse du programmeur
Si value est une chaîne littérale dans l’instruction SQL, elle est trop longue pour son utilisation prévue. Si value n’est pas une chaîne littérale, examinez l’instruction SQL pour déterminer où la transformation a lieu. Soit l’entrée de la transformation est trop longue, soit la cible est trop courte. Corrigez le problème et réexécutez l’instruction.

SQLSTATE
22001

CODE RETOUR -431

ROUTINE routine-name (SPECIFIC NAME specific-name) OF TYPE routine-type HAS BEEN INTERRUPTED BY THE USER

Explication
Un utilisateur a émis TERMINATE pendant une session de débogage de la routine SQL routine-name. Le TERMINATE a peut-être été émis car une attente ou une boucle infinie a été rencontrée.

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

Réponse de l’utilisateur
Aucune récupération n’est nécessaire.

SQLSTATE
38504

CODE RETOUR -430

routine-type routine-name (SPECIFIC NAME specific-name) HAS ABNORMALLY TERMINATED

Explication
Une interruption anormale s’est produite alors que la routine  routine-name (procédure ou fonction stockée) était sous contrôle.

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

Réponse du programmeur
La procédure stockée ou la fonction doit être corrigée. Contactez l’auteur de la routine ou votre administrateur de base de données. Tant qu’elle n’est pas corrigée, la routine ne doit pas être utilisée.

SQLSTATE
38503

CODE RETOUR -427

DYNAMIC ROLLBACK NOT VALID AT AN APPLICATION SERVER WHERE UPDATES ARE NOT ALLOWED

Explication
Une application exécutée à l’aide des protocoles DRDA a tenté d’émettre une instruction ROLLBACK dynamique alors qu’elle était connectée à un emplacement où les mises à jour ne sont pas autorisées. Un ROLLBACK dynamique ne peut être émis que lorsque vous êtes connecté à un emplacement auquel les mises à jour sont autorisées.

Action du système
L’instruction ne peut pas être traitée. Aucun ROLLBACK n’est effectué.

Réponse du programmeur
Les protocoles IMS ou CICS® doivent être utilisés pour annuler le travail dans ces environnements.

SQLSTATE
2D529