Archives de catégorie : SQLCODE

CODE RETOUR -480

THE PROCEDURE procedure-name HAS NOT YET BEEN CALLED

Explication
La procédure identifiée dans une instruction DESCRIBE PROCEDURE ou ASSOCIATE LOCATORS n’a pas encore été appelée dans le processus applicatif ou la procédure a été appelée, mais une validation explicite ou implicite s’est produite avant l’instruction.

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

Réponse du programmeur
Corrigez les instructions de sorte que la syntaxe exacte utilisée pour spécifier le nom de la procédure sur l’instruction CALL soit la même que celle sur ASSOCIATE LOCATOR et/ou DESCRIBE PROCEDURE. Si un nom non qualifié est utilisé pour CALL la procédure, le nom en une partie doit également être utilisé sur les autres instructions. Si l’instruction CALL est faite avec un nom en trois parties et que le serveur actuel est le même que l’emplacement dans le nom en trois parties, la procédure ASSOCIATE LOCATOR ou DESCRIBE peut omettre l’emplacement. Réexécutez les déclarations.

SQLSTATE
51030

CODE RETOUR -478

ALTER, DROP, OR REVOKE AFFECTING OBJECT TYPE  object-type CANNOT BE PROCESSED BECAUSE OBJECT  dependent-object OF TYPE dependent-type IS DEPENDENT ON IT

Explication
Une instruction ALTER, DROP ou REVOKE a été émise sur un type d’objet qui est une dépendance pour un ou plusieurs objets. Un type d’objet ne peut pas être supprimé ou révoqué si un autre type d’objet a une dépendance sur ce type d’objet.

object-type
Le type d’objet qui est requis et ne peut pas être supprimé.
dependent-object
Le nom de l’objet qui empêche le type d’objet d’être supprimé ou révoqué.
dependent-type
Le type de l’objet qui empêche le type d’objet d’être supprimé ou révoqué.

Des exemples d’où la dépendance peut se produire incluent les situations suivantes :

Instruction ALTER ou DROP

Pour une instruction ALTER ou DROP, les dépendances suivantes peuvent exister en fonction de la valeur object-type .

  • Si object-type est ALIAS :
    • Une autorisation de ligne ou un masque de colonne référence cet alias. Cela ne se produira que lorsque l’alias est un alias pour une table ou une vue.
    • Il existe une fonction SQL en ligne qui utilise la séquence dans une expression NEXT VALUE ou PREVIOUS VALUE. Cela ne se produira que lorsque l’alias est un alias pour une séquence.
  • Si le object-type est COLUMN:
    • Un index référence cette colonne.
    • Une contrainte d’unicité fait référence à cette colonne.
    • Vue qui référence directement ou indirectement cette colonne.
    • Une contrainte référentielle qui référence cette colonne en tant que clé étrangère.
  • Si le object-type est ARRAY :
    • Une fonction ou une procédure stockée utilise le type de tableau défini par l’utilisateur.
  • Si le object-type est TYPE DISTINCT :
    • Une colonne d’une table est définie comme ce type distinct.
    • Un paramètre ou une variable SQL d’une fonction est défini comme ce type distinct.
    • Un paramètre ou une variable SQL d’une procédure est défini comme ce type distinct.
    • Une séquence est définie avec ce type distinct comme type de données.

La dépendance peut être sur l’une des fonctions de distribution générées pour un type distinct.

  • Si le object-type est FUNCTION :
    • Une autorisation de ligne ou un masque de colonne référence cette fonction.
    • Une autre fonction est sourcée sur cette fonction.
    • Une vue utilise cette fonction.
    • Un package de déclenchement utilise cette fonction.
    • Une table utilise cette fonction dans une contrainte de vérification ou une valeur par défaut définie par l’utilisateur.
    • Une définition de table de requête matérialisée utilise cette fonction.
  • Si le object-type est JAR :
    • Une fonction ou une procédure stockée utilise ce JAR dans son NOM EXTERNE.
    • Un autre JAR utilise ce JAR dans son chemin Java™.
  • Si le object-type est ROLE :
    • Un contexte de confiance utilise ce rôle.
    • Le rôle est associé au thread actuel.
    • Le rôle est le propriétaire de l’objet qui est supprimé.
    • Le rôle est le concédant des droits ACCESSCTRL, DATAACCESS ou DBADM système.
    • Le rôle est le concédant de tout privilège ou autorité qui a utilisé l’autorité ACCESSCTRL ou SECADM pour accorder l’octroi.

Dans le cas où object-type est ROLE, cette erreur peut également se produire lors de la révocation des privilèges détenus par ce rôle. Lorsque les privilèges de rôle sont révoqués, la mise en cascade de l’instruction REVOKE peut rencontrer des dépendances qui empêchent le traitement de l’instruction REVOKE.

  • Si le object-type est SEQUENCE :
    • Une fonction SQL est définie qui référence cette séquence.
    • Une procédure SQL est définie qui référence cette séquence.
    • Une définition de vue est définie qui fait référence à cette séquence.
    • Un déclencheur est défini qui fait référence à cette séquence.
  • Si le object-type est SYNONYM :
    • Une autorisation de ligne ou un masque de colonne fait référence à ce synonyme.
  • Si le object-type est TABLE :
    • Une autorisation de ligne ou un masque de colonne fait référence à cette table.
    • Cette table est la table d’historique d’une table temporelle de période système. Une tentative de suppression de l’espace table ou de la base de données qui contient la table d’historique provoque également cette erreur.
    • Cette table est la table d’archivage d’une table activée pour l’archivage. Une tentative de suppression de l’espace table ou de la base de données qui contient la table d’archivage provoque également cette erreur.
  • Si le object-type est VIEW :
    • Une autorisation de ligne ou un masque de colonne référence cette vue.
  • Si object-type est une variable globale :
    • Une fonction SQL référence cette variable globale.
    • Une vue référence cette variable globale.
    • Un déclencheur référence cette variable globale.

Instruction REVOKE

Pour une instruction REVOKE, les dépendances suivantes peuvent exister en fonction de la valeur du object-type  .

  • SYSADM est en cours de révocation. Lorsque SYSADM est révoqué, la mise en cascade de l’instruction REVOKE peut rencontrer des dépendances qui empêchent le traitement de l’instruction REVOKE.
  • Si le object-type est ARRAY :
    • Une fonction ou une procédure stockée utilise le type de tableau défini par l’utilisateur.
  • Si le object-type est DISTINCT TYPE :
    • Une colonne d’une table appartenant au révoqué est définie comme ce type distinct.
    • Un paramètre ou une variable SQL d’une fonction appartenant au révoqué est défini comme ce type distinct.
    • Un paramètre ou une variable SQL d’une procédure appartenant au révoqué est défini comme ce type distinct.
    • Une séquence appartenant au révoqué est définie avec ce type distinct comme type de données.
  • Si le object-type est FUNCTION :
    • Une fonction détenue par le révoqué provient de cette fonction.
    • Une vue détenue par le révoqué utilise cette fonction.
    • Un package de déclencheur appartenant au révoqué utilise cette fonction.
    • Une table appartenant au révoqué utilise cette fonction dans une contrainte de vérification ou une valeur par défaut définie par l’utilisateur.
    • Une table de requête matérialisée appartenant au révoqué utilise cette fonction dans la définition.
    • Un index qui appartient au révoqué utilise cette fonction.
  • Si le object-type est JAR :
    • Une fonction ou une procédure stockée appartenant au révoqué utilise ce JAR dans son EXTERNAL NAME.
    • Un autre JAR appartenant au révoqué utilise ce JAR dans son chemin Java.
  • Si le object-type est PROCEDURE :
    • Une définition de déclencheur appartenant au révoqué contient une instruction CALL avec le nom de cette procédure stockée.
  • Si le object-type est SEQUENCE :
    • Une fonction SQL est définie qui référence cette séquence.
    • Une procédure SQL est définie qui référence cette séquence.
    • Une définition de vue est définie qui fait référence à cette séquence.
    • Un déclencheur est défini qui fait référence à cette séquence.
  • Si object-type est une variable globale :
    • Une fonction détenue par le révoqué fait référence à cette variable globale.
    • Une vue détenue par le révoqué fait référence à cette variable globale.
    • Un déclencheur appartenant au révoqué fait référence à cette variable globale.

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

Réponse du programmeur
Supprimez les dépendances sur cet objet. Par exemple, supprimez l’objet identifié par dépendant-objet. Ensuite, relancez la demande.

SQLSTATE
Le SQLSTATE dépend des valeurs de type d’objet et de type dépendant :

ValuesSQLSTATE
object-type: JARdependent-type: FUNCTION or PROCEDURE46003
object-type: JARdependent-type: JAR4600C
All other cases42893

CODE RETOUR -476

REFERENCE TO ROUTINE routine-name WAS IDENTIFIED WITHOUT A SIGNATURE, OR BY BOTH SIGNATURE AND SPECIFIC NAME, BUT THE ROUTINE IS NOT UNIQUE WITHIN ITS SCHEMA

Explication
Les références à une routine sans signature sont autorisées, mais la routine routine-name  identifiée doit être unique dans son schéma et elle ne l’est pas.

Notez également que dans les instructions ALTER FUNCTION, DROP FUNCTION, COMMENT, GRANT et REVOKE (pour EXECUTE sur les fonctions), une référence non qualifiée est qualifiée avec le schéma par défaut, et c’est le schéma où le problème peut être trouvé. Dans la clause SOURCE d’une instruction CREATE FUNCTION, la qualification provient du chemin SQL. Dans ce cas, le premier schéma du chemin contenant une fonction de ce nom avait d’autres fonctions du même nom.

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

Réponse du programmeur
Si l’instruction fait référence à une fonction, effectuez l’une des actions suivantes :

  • Complétez la signature.
  • Utilisez le nom SPÉCIFIQUE de la fonction.
  • Modifiez le chemin SQL.

Si l’instruction fait référence à une procédure, une procédure du même nom existe, mais il existe des différences dans la liste des paramètres. Pour modifier la liste des paramètres de la procédure existante, ajoutez la clause SPECIFIC avec le nom de la procédure à l’instruction CREATE.

SQLSTATE
42725

CODE RETOUR -475

THE RESULT TYPE type-1 OF THE SOURCE FUNCTION CANNOT BE CAST TO THE RETURNS TYPE type-2 OF THE USER-DEFINED FUNCTION function-name

Explication
Pour que CREATE FUNCTION pour une fonction définie par l’utilisateur source soit valide, le type de résultat ( type-1 ) de la fonction source doit pouvoir être converti en type RETURNS ( type-2 ) de la fonction en cours de création. Il n’y a pas de transtypage pris en charge entre ces types de données.

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

Réponse du programmeur
Modifiez le type de données RETURNS ou la fonction SOURCE identifiée afin que le type de résultat de la fonction SOURCE puisse être converti en type de données RETURNS.

SQLSTATE
42866

CODE RETOUR -473

A USER DEFINED DATA TYPE CANNOT BE CALLED THE SAME NAME AS A SYSTEM PREDEFINED TYPE (BUILT-IN TYPE)

Explication
Le nom d’un type de données à créer a un nom non qualifié qui est le même qu’un type de données prédéfini par le système. Le nom que vous avez spécifié n’est pas autorisé. L’ajout de délimiteurs ne rend pas le nom valide. Les noms suivants sont restreints :

BIGINTDECIMALREF
BINARYDECFLOATROWID
BLOBDOUBLESMALLINT
BOOLEANDOUBLE PRECISIONTIME
CHARFLOATTIMESTAMP
CHAR VARYINGGRAPHICVARBINARY
CHARACTERINTVARCHAR
CHARACTER VARYINGINTEGERVARGRAPHIC
CLOBLONG VARCHARXML
DATALINKLONG VARGRAPHIC 
DATENUMERIC 
DBCLOBREAL 
DECROWID

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

Réponse du programmeur
Corrigez l’instruction pour utiliser un autre identificateur pour le nom du nouveau type défini par l’utilisateur.

SQLSTATE
42918

CODE RETOUR -472

CURSOR cursor-name WAS LEFT OPEN BY EXTERNAL FUNCTION function-name (SPECIFIC NAME specific-name)

Explication
Le programme de fonction n’a pas fermé le curseur spécifié. Modifiez le programme de fonction pour qu’il ferme le curseur.

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

Réponse du programmeur
Rééditez la déclaration.

SQLSTATE
24517

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