Tous les articles par Mr COBOL

CODE RETOUR -487

object-type object-name ATTEMPTED TO EXECUTE AN SQL STATEMENT WHEN THE DEFINITION OF THE FUNCTION OR PROCEDURE DID NOT SPECIFY THIS ACTION

Explication
Une fonction définie par l’utilisateur ou un object-name  de procédure stockée a été invoquée et a tenté d’exécuter des instructions SQL, mais la fonction ou la procédure a été créée avec l’option NO SQL.

Dans un environnement de fonctions et de procédures imbriquées, l’option SQL en vigueur est la plus restrictive qui a été spécifiée dans la hiérarchie imbriquée de fonctions et de procédures. L’option d’accès aux données SQL en vigueur ne permet pas de modifier les données.

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

Réponse du programmeur
Utilisez une instruction ALTER pour modifier la définition de la fonction ou de la procédure afin d’autoriser les instructions SQL, ou supprimez l’instruction SQL défaillante de la fonction ou de la procédure externe.

SQLSTATE
38001

CODE RETOUR -483

IN CREATE FUNCTION FOR function-name STATEMENT, THE NUMBER OF PARAMETERS DOES NOT MATCH THE NUMBER OF PARAMETERS OF THE SOURCE FUNCTION

Explication
Une tentative est en cours pour CRÉER une fonction function-name défini par l’utilisateur qui provient d’une autre fonction. Une des situations suivantes a été identifiée :

  • La clause SOURCE utilise un nom de fonction (liste de paramètres d’entrée) pour identifier la fonction source, et le nombre de types dans la liste est différent du nombre de paramètres de la fonction en cours de création.
  • La clause SOURCE utilise une syntaxe différente pour identifier la fonction source, et le nombre de types de cette fonction est différent du nombre de paramètres de la fonction en cours de création.

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

Réponse du programmeur
Le nombre de paramètres pour la fonction SOURCE et pour la fonction en cours de création doit être le même. L’identification de la fonction SOURCE doit être modifiée en :

  • corriger la liste des paramètres d’entrée
  • corrigez le nom de la fonction ou le nom spécifique de la fonction pour identifier la fonction appropriée.

Il est également possible que le chemin SQL doive être corrigé pour que la résolution de fonction correcte se produise.

SQLSTATE
42885

CODE RETOUR -482

THE PROCEDURE procedure-name RETURNED NO LOCATORS

Explication
La procédure identifiée dans une instruction ASSOCIATE LOCATORS n’a renvoyé aucun localisateur d’ensemble de résultats.

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

Réponse du programmeur
Déterminez si les localisateurs de jeu de résultats sont renvoyés à partir de la procédure identifiée à l’aide de l’instruction DESCRIBE PROCEDURE.

SQLSTATE
51030

CODE RETOUR -481

THE GROUP BY CLAUSE CONTAINS element-1 NESTED WITHIN element-2

Explication
Les types d’imbrication suivants ne sont pas autorisés dans une clause GROUP BY :

  • CUBE dans CUBE, ROLLUP ou grouping-expression-list
  • ROLLUP dans CUBE, ROLLUP ou grouping-expression-list
  • () – parfois appelé un grand-total – dans CUBE, ROLLUP ou grouping-expression-list
  • GROUPING SETS dans GROUPING SETS, CUBE, ROLLUP ou grouping-expression-list
  • CUBE, ROLLUP, () – parfois appelé un grand total, GROUPING SETS dans n’importe quelle fonction, expression CASE ou spécification CAST

Dans certains cas, la valeur *N sera fournie pour l’élément-2. Dans ce cas, *N représente CUBE, ROLLUP, GROUPING SETS ou grouping-expression-list.

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

Réponse du programmeur
Modifiez la clause GROUP BY pour supprimer l’imbrication identifiée par element-1 .

SQLSTATE
428B0

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