Archives de catégorie : SQLCODE

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

CODE RETOUR -452

UNABLE TO ACCESS THE FILE REFERENCED BY HOST VARIABLE variable-position. REASON CODE: reason-code

Explication

Une erreur s’est produite pendant que Db2 accédait ou tentait d’accéder au fichier référencé par la variable hôte spécifiée.


variable-position
Indique la position de la variable hôte qui a référencé le fichier, en tant que nième variable hôte, où n est la valeur.

reason-code
Une valeur numérique qui indique la raison de l’erreur :

1

Si la longueur du nom de fichier n’est pas valide, le chemin a un format non valide ou un chemin relatif a été spécifié.

2

Si l’option de fichier n’est pas valide (l’option de fichier doit être 2, 8, 16 ou 32) ou si l’option de fichier spécifiée n’est pas cohérente avec l’opération que Db2 a tenté d’effectuer. Par exemple, l’option de fichier FILE_READ est spécifiée dans une instruction FETCH SQL.

3

Si le fichier est introuvable.

4

Si l’option SQL_FILE_CREATE a été spécifiée pour un fichier portant le même nom qu’un fichier existant.

7

Si un disque plein a été rencontré lors de l’écriture dans le fichier.

9

Si une erreur de support s’est produite lors de l’accès au fichier.

12

Si le fichier HFS que Db2 a tenté d’ouvrir pour une opération de lecture, d’ajout ou de réécriture n’est pas un fichier normal :

  • L’ensemble de données BSAM que Db2 a tenté d’ouvrir pour une opération de lecture, d’ajout ou de réécriture n’est pas un ensemble de données séquentiel physique (PS) ou d’organisation de partition (PO).
  • L’ensemble de données BSAM que Db2 a tenté d’ouvrir pour une opération de lecture, d’ajout ou de réécriture n’a pas le format d’enregistrement VB, V ou U.
  • L’option APPEND a été spécifiée pour un ensemble de données avec une organisation de partition (PO).

13

Si des erreurs se sont produites lorsque Db2 a tenté d’OUVRIR, LIRE, ÉCRIRE ou FERMER un fichier HFS ou un ensemble de données BSAM, il peut y avoir un code d’achèvement système sur la console pour indiquer la raison pour laquelle Db2 n’a pas pu effectuer l’opération demandée.

variable-position est défini sur 0 si la position de la variable hôte ne peut pas être déterminée.


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

Réponse du programmeur
Effectuez l’une des actions suivantes en fonction de la valeur du code de raison :

1

Corrigez la longueur du nom de fichier, le nom de fichier et le chemin d’accès au fichier. Si un chemin relatif est utilisé pour le fichier HFS, remplacez-le par un chemin absolu.

2

Corrigez l’option de fichier dans l’application.

3

Assurez-vous que le fichier spécifié existe avant de tenter d’accéder au fichier.

4

Supprimez le fichier s’il n’est plus nécessaire ou spécifiez un nom de fichier qui n’existe pas actuellement.

7

Supprimez les fichiers inutiles pour libérer de l’espace disque ou spécifiez un fichier qui réside sur un autre lecteur ou système de fichiers avec suffisamment d’espace disque. Assurez-vous également qu’aucune limite de taille de fichier utilisateur ou de système d’exploitation n’a été atteinte. Si la page de codes de votre application utilise un schéma de codage multi-octets, il est possible que seule une partie du dernier caractère ait été écrite. Assurez-vous que le fichier ne contient que des caractères entièrement formés.

8

La longueur maximale de la colonne de résultat doit être étendue pour permettre l’expansion qui se produit lorsque la chaîne est convertie.

9

Corrigez toutes les erreurs sur le support où le fichier a été lu.

12

Prenez les mesures appropriées :

  • Corrigez le nom du fichier pour qu’il fasse référence à un fichier normal s’il s’agit d’un fichier HFS.
  • Corrigez le nom du fichier pour qu’il fasse référence à un ensemble de données PS ou PO s’il s’agit d’un ensemble de données BSAM.
  • Corrigez l’opération de fichier pour qu’elle contienne l’action correcte.

13

Corrigez l’erreur en fonction du code d’achèvement du système.

SQLSTATE
428A1

CODE RETOUR -451

THE data-item DEFINITION IN THE CREATE OR ALTER STATEMENT FOR routine-name CONTAINS DATA TYPE type WHICH IS NOT SUPPORTED FOR THE TYPE AND LANGUAGE OF THE ROUTINE

Explication
Une erreur s’est produite dans la data-item de l’instruction CREATE ou ALTER pour routine-name. L’instruction contenait un type de données invalide ou contenait un type distinct basé sur le type de données invalide.

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

Réponse du programmeur
Corrigez la spécification de la routine et relancez l’instruction CREATE.

SQLSTATE
42815

CODE RETOUR -450

USER-DEFINED FUNCTION OR STORED PROCEDURE name, PARAMETER NUMBER parmnum, OVERLAYED STORAGE BEYOND ITS DECLARED LENGTH.

Explication
Au retour d’un nom de fonction spécifique name ou d’un nom de procédure stockée name, Db2 a détecté un stockage de superposition au-delà de la longueur déclarée d’un paramètre. Le numéro de paramètre est spécifié pour une procédure stockée ou une fonction. Ceci n’est pas autorisé.

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

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

SQLSTATE
39501

CODE RETOUR -449

CREATE OR ALTER STATEMENT FOR FUNCTION OR PROCEDURE routine-name CONTAINS AN INVALID FORMAT OF THE EXTERNAL NAME CLAUSE OR IS MISSING THE EXTERNAL NAME CLAUSE

Explication
Une erreur a été trouvée dans la clause EXTERNAL NAME de l’instruction CREATE FUNCTION, CREATE PROCEDURE, ALTER FUNCTION ou ALTER PROCEDURE pour routine-name, ou la clause est nécessaire mais n’a pas été spécifiée.

Pour les routines externes avec LANGUAGE JAVA, le nom doit être spécifié et il doit contenir un nom de external-java-routine-name valide de la forme suivante : jar-name:package-id…class-id.method-id(method- Signature)

  • Aucun espace n’est autorisé dans les guillemets simples.
  • Le method-name se compose de la liste des package-idsclass-id et de method-id et ne doit pas dépasser 254 octets.
  • Zéro ou plusieurs package-ids peuvent être spécifiés, précédant class-id.
  • La method-signature est facultative et correspond à une liste de types de données Java™ séparés par des virgules. Si spécifié, la method-signature ne doit pas dépasser 1024 octets.
  • Si plusieurs chaînes sont spécifiées, la longueur totale de toutes les chaînes concaténées pour le external-java-routine-name ne doit pas être supérieure à 1305.

Pour les routines externes avec un langage autre que JAVA, le nom externe doit être un identifiant court avec des lettres ou des chiffres. Le premier caractère doit être une lettre (il s’agit de la convention de nommage MVS™ pour les modules de chargement). Une cause possible de cette erreur est l’inclusion d’un espace dans le nom.

Si la clause est omise, le nom externe est par défaut function-name. Cependant, pour CREATE FUNCTION ou CREATE PROCEDURE, si le nom de la fonction ou de la procédure comporte plus de huit caractères, la clause EXTERNAL NAME doit être explicitement spécifiée pour spécifier un identificateur court valide comme nom externe.

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

Réponse de l’utilisateur
Lorsque LANGUE est JAVA, les causes possibles incluent :

  • Omettre la clause EXTERNAL NAME.
  • Y compris un blanc.
  • Avoir le ‘!’ au début ou à la fin du nom.
  • Spécification d’un nom de routine java externe non valide.

Réponse du programmeur
Corrigez la syntaxe de l’instruction SQL.

SQLSTATE
42878