Tous les articles par Mr COBOL

CODE RETOUR -471

INVOCATION OF FUNCTION OR PROCEDURE name FAILED DUE TO REASON rc

Explication
Une routine a été invoquée. L’appel de routine n’a pas été accepté en raison du code de raison Db2 rc.
name
Le nom de la routine qui a été invoquée.
rc
Le code anomalie Db2 décrivant la cause de l’échec.

Action du système
L’instruction ne peut pas être traitée. Un message DSNX9xx décrivant l’erreur peut s’afficher sur la console système MVS™.

Réponse du programmeur
Corrigez la condition décrite par le code anomalie Db2.

SQLSTATE
55023

CODE RETOUR -470

SQL CALL STATEMENT SPECIFIED A NULL VALUE FOR INPUT PARAMETER number, BUT THE STORED PROCEDURE DOES NOT SUPPORT NULL VALUES.

Explication
Db2 a reçu une instruction SQL CALL pour une procédure stockée et a trouvé une valeur nulle dans la liste des paramètres entrants. La procédure stockée a été définie dans la table du catalogue SYSIBM.SYSROUTINES avec PARAMETER_STYLE de GENERAL, qui spécifie que la routine n’accepte pas les valeurs NULL.

Un appel à une procédure stockée avec une valeur LANGUAGE de JAVA reçoit ce SQLCODE si un paramètre d’entrée dans la procédure stockée Java™ a un type de base Java qui ne peut pas être défini sur une valeur nulle.

number
Le numéro de paramètre de la zone ORDINAL dans SYSIBM.SYSPARMS.

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

Réponse du programmeur
Si la procédure stockée ne doit pas accepter les valeurs NULL, modifiez l’application appelante pour fournir une valeur non NULL.

Si la procédure stockée doit accepter des valeurs NULL, utilisez l’instruction ALTER PROCEDURE pour modifier le PARAMETER STYLE de la procédure stockée en DB2SQL ou GENERAL WITH NULLS.

SQLSTATE
39004

CODE RETOUR -469

SQL CALL STATEMENT MUST SPECIFY AN OUTPUT VARIABLE FOR PARAMETER number

Explication
DB2 a reçu une instruction SQL CALL pour une procédure stockée. Db2 a trouvé la ligne dans la table de catalogue SYSIBM.SYSROUTINES associée au nom de procédure demandé. Cependant, le numéro number de paramètre a été identifié dans la table SYSIBM.SYSPARMS en tant que paramètre OUT ou INOUT. Une variable pouvant être mise à jour doit être fournie dans l’instruction SQL CALL pour un paramètre défini comme OUT ou INOUT.

Une constante ou une expression est un exemple d’argument d’entrée non valide pour une fonction ou un paramètre OUT ou INOUT pour une procédure. Par exemple, supposons qu’une procédure nommée MY_PROC soit définie avec un paramètre OUT. L’appel suivant de la procédure n’est pas valide car l’argument passé au paramètre OUT est une expression constante, à laquelle des valeurs ne peuvent pas être affectées.

CALL MY_PROC(1+2);

  number
Le numéro de paramètre de la zone ORDINAL dans SYSIBM.SYSPARMS.

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

Réponse du programmeur
Si l’instruction SQL CALL est codée de manière incorrecte, modifiez l’application SQL pour fournir une variable de sortie sur l’instruction SQL CALL.

Si la table SYSIBM.SYSPARMS contient des informations incorrectes, les instructions DROP PROCEDURE et CREATE PROCEDURE doivent être utilisées pour remplacer la définition de catalogue de la procédure stockée.

SQLSTATE
42886

CODE RETOUR -461

A VALUE WITH DATA TYPE source-data-type CANNOT BE CAST TO TYPE target-data-type

Explication
L’instruction contient un CAST implicite ou explicite, mais la combinaison des types de données source et cible n’est pas prise en charge. Db2 a tenté de convertir une valeur source-data-type en type de données target-data-type. Cette combinaison n’est pas prise en charge.

Cette erreur est également émise pour une instruction qui fait référence à plusieurs schémas de codage, lorsqu’il y a une tentative de transtypage d’une valeur de chaîne avec une procédure de champ. Cette combinaison n’est pas prise en charge.

Cette erreur peut être émise pour une tentative d’utilisation d’une fonctionnalité qui nécessite un paramètre APPLCOMPAT supérieur au paramètre actuel. Le paramètre APPLCOMPAT actuel ne prend pas en charge une fonctionnalité qui a été demandée.

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

Réponse du programmeur
Modifiez le type de données de la source ou de la cible afin que le cast soit pris en charge.

Pour les valeurs de type de données intégrées, un transtypage impliquant une valeur de type distinct définie par l’utilisateur ou un transtypage impliquant une valeur de tableau, consultez Casting entre types de données.

Si un CAST explicite a été spécifié, corrigez la spécification CAST pour spécifier une combinaison prise en charge de types source et cible.

SQLSTATE
42846

CODE RETOUR -458

IN A REFERENCE TO FUNCTION function-name BY SIGNATURE, A MATCHING FUNCTION COULD NOT BE FOUND

Explication
Dans une référence à la fonction function-name par signature, aucune fonction correspondante n’a pu être trouvée. Le problème peut provenir du type de données ou d’autres attributs d’un paramètre. Pour certains types de données, il existe des attributs en plus du type de données :

  • Longueur, précision ou échelle

Bien qu’il ne soit pas nécessaire de spécifier un attribut de longueur, de précision ou d’échelle pour un type de données, s’il en est un, il doit y avoir une correspondance exacte sur la spécification correspondante du paramètre pour la fonction existante telle que définie dans SYSPARMS.

Un type de FLOAT(n) n’a pas besoin de correspondre à la valeur définie pour n puisque 1<=n<=21 signifie REAL et 22<=n<=53 signifie DOUBLE. La correspondance se produit selon que le type est REAL ou DOUBLE.

Cependant, une correspondance sur le type de données est suffisante.

Pour l’indiquer, un ensemble vide de parenthèses doit être spécifié pour les types de données qui permettent une spécification de longueur, de précision ou d’échelle. Par exemple, en supposant qu’il existe une fonction pour laquelle un paramètre a été défini comme CHAR(12) dans l’instruction CREATE FUNCTION, une référence à cette fonction par une signature pourrait spécifier ce paramètre comme CHAR(12) ou CHAR(). La syntaxe CHAR() fournit un moyen de dire “ne vous souciez pas des attributs de longueur, de précision et d’échelle pour trouver une fonction correspondante”.

FLOAT() ne peut pas être utilisé car la valeur du paramètre indique différents types de données (REAL ou DOUBLE).

Si, toutefois, aucune longueur, précision, échelle ou parenthèse vide n’a été spécifié, les règles par défaut normales s’appliquent. Par exemple, une spécification de CHAR se traduirait par CHAR(1) comme dans l’instruction CREATE TABLE. De plus, cette spécification implicite de longueur, de précision ou d’échelle doit correspondre exactement à la spécification correspondante du paramètre pour la fonction existante telle que définie dans SYSPARMS.

  • Sous-type ou schéma de codage

Vous n’avez pas besoin de spécifier le sous-type ou le schéma de codage (clause CCSID) pour identifier une fonction existante dans la base de données. Cependant, si un sous-type ou un schéma de codage est spécifié, il doit y avoir une correspondance exacte sur la spécification correspondante du paramètre pour la fonction existante telle que définie dans SYSPARMS.

Noms de fonction non qualifiés :

  • Pour les instructions ALTER FUNCTION, DROP FUNCTION, COMMENT ON FUNCTION, GRANT et REVOKE pour EXECUTE sur les fonctions, un nom de fonction non qualifié est implicitement qualifié avec le schéma par défaut, et c’est le schéma où la fonction avec le problème peut être trouvée.
  • Dans la clause SOURCE d’une instruction CREATE FUNCTION, la qualification provient du chemin SQL. Dans ce cas, Db2 n’a pas pu résoudre l’appel d’une fonction à l’aide des schémas du chemin SQL de l’utilisateur. Pour plus de détails, voir CREATE FUNCTION (source).

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

Réponse du programmeur
Les réponses possibles incluent :

  • Modification du chemin SQL pour inclure le schéma correct.
  • Modification des attributs des paramètres.
  • Utiliser un nom SPÉCIFIQUE pour faire référence à la fonction au lieu d’une signature.

SQLSTATE
42883

CODE RETOUR -457

A USER-DEFINED FUNCTION OR USER-DEFINED TYPE CANNOT BE CALLED name SINCE IT IS RESERVED FOR SYSTEM USE

Explication
Une fonction ou un type défini par l’utilisateur ne peut pas être créé ou référencé car le nom est réservé à l’usage du système.

name
Le nom de la fonction définie par l’utilisateur ou du type défini par l’utilisateur.

Un certain nombre de noms utilisés comme mots-clés sont réservés à l’utilisation du système. Ces noms ne peuvent pas être utilisés comme fonctions définies par l’utilisateur ou noms de type définis par l’utilisateur, même s’il s’agit d’identifiants délimités.

Ces noms sont :

=        <         >         >=        <=  

 < >    ¬=        ¬>        ¬>            
ALL      AND       ANY       BETWEEN   DISTINCT  
EXCEPT   EXISTS    FALSE     FOR       FROM      
IN       IS        LIKE      MATCH     NOT       
NULL     ONLY      OR        OVERLAPS  SIMILAR   
SOME     TABLE     TRUE      TYPE      UNIQUE    
UNKNOWN

Les noms des types de données intégrés ne peuvent pas être utilisés comme nom d’un type défini par l’utilisateur (par exemple, CHAR).

Vous ne pouvez pas utiliser un astérisque (*) comme nom spécifique pour un type ou un nom de procédure défini par l’utilisateur.

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

Réponse du programmeur
Sélectionnez un nom pour la fonction ou le type défini par l’utilisateur qui n’est pas réservé à l’utilisation du système.

SQLSTATE
42939

CODE RETOUR -456

IN CREATE FUNCTION FOR function-name, THE SPECIFIC NAME specific-name ALREADY EXISTS IN THE SCHEMA

Explication
Un nom SPECIFIC a été explicitement spécifié comme specific-name dans l’instruction CREATE FUNCTION pour function-name, mais ce nom existe déjà en tant que nom SPECIFIC pour une autre fonction dans le schéma.

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

Réponse du programmeur
Choisissez un nouveau nom SPÉCIFIC.

SQLSTATE
42710

CODE RETOUR -455

IN CREATE FOR routine-name, THE SCHEMA NAME schema-name1 PROVIDED FOR THE SPECIFIC NAME DOES NOT MATCH THE SCHEMA NAME schema-name2 OF THE ROUTINE

Explication
Si le nom SPECIFIC est spécifié en deux parties, la partie schema-name1 doit être la même que la partie schema-name2 du routine-name . Notez que la partie schema-name2 de routine-name peut avoir été spécifiée directement ou avoir par défaut l’ID d’autorisation de l’instruction.

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

Réponse du programmeur
Corrigez l’énoncé.

SQLSTATE
42882

CODE RETOUR -454

THE SIGNATURE PROVIDED IN THE CREATE FUNCTION STATEMENT FOR function-name MATCHES THE SIGNATURE OF SOME OTHER FUNCTION ALREADY EXISTING IN THE SCHEMA

Explication
La signature se compose du nom de la fonction ( function-name ), du nombre de paramètres définis pour la fonction et d’une liste ordonnée des types des paramètres (sans tenir compte des paramètres des types). Dans ce cas, il existe déjà une fonction dans le schéma et la fonction existante a la même signature que la fonction en cours de création. Voir la référence SQL pour les détails sur l’unicité d’une fonction.

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

Réponse du programmeur
Déterminez si la fonction existante fournit déjà la fonctionnalité appropriée. Sinon, modifiez la signature de la nouvelle fonction. Une façon de le faire est de changer le nom de la fonction.

SQLSTATE
42723

CODE RETOUR -453

THERE IS A PROBLEM WITH THE RETURNS CLAUSE IN THE CREATE FUNCTION STATEMENT FOR function-name

Explication
Un problème de conversion du résultat de la fonction définie par l’utilisateur function-name a été identifié. Le type de données CAST FROM ne peut pas être converti en type de données RETURNS, et il doit l’être. Consultez la référence SQL pour plus de détails sur la conversion entre les types de données.

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

Réponse du programmeur
Modifiez la clause RETURNS ou CAST FROM afin que le type de données CAST FROM puisse être converti en type de données RETURNS.

SQLSTATE
42880