Tous les articles par Mr COBOL

CODE RETOUR -580

THE RESULT-EXPRESSIONS OF A CASE EXPRESSION CANNOT ALL BE NULL

Explication
Il y a une expression CASE dans l’instruction qui a toutes les result-expressions (expressions suivant les mots clés THEN et ELSE) codées avec le mot clé NULL.

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

Réponse du programmeur
Modifiez l’expression CASE pour inclure au moins une result-expressions avec un mot-clé autre que NULL.

SQLSTATE
42625

CODE RETOUR -579

object-type object-name ATTEMPTED TO READ DATA WHEN THE DEFINITION OF THE FUNCTION OR PROCEDURE DID NOT SPECIFY THIS ACTION

Explication
L’environnement actuel n’autorise pas les instructions SQL qui lisent les données. L’une des situations suivantes s’est produite :

  • Une fonction définie par l’utilisateur ou une procédure stockée object-name a été invoquée et a tenté de lire des données, mais la fonction ou la procédure a été définie sans l’option READS SQL DATA ou MODIFIES SQL DATA.
  • Une fonction ou une procédure définie avec CONTAINS SQL ou NO SQL a tenté d’appeler une autre fonction ou procédure définie avec READS SQL DATA.

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 effet ne permet pas la lecture des données.

Action du système
L’instruction SQL a échoué.

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 qui lisent des données, ou supprimez l’instruction SQL défaillante de la fonction ou de la procédure externe.

SQLSTATE
38004

CODE RETOUR -578

THE RETURN STATEMENT WAS NOT EXECUTED FOR SQL FUNCTION function-name.

Explication
La fonction SQL a atteint la fin du corps de la routine sans exécuter d’instruction RETURN.

function-name
Le nom de la fonction.

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

Réponse de l’utilisateur
Ajoutez une instruction RETURN au corps de la routine de fonction et réessayez la demande.

SQLSTATE
2F005

CODE RETOUR -577

object-type object-name ATTEMPTED TO MODIFY DATA WHEN THE DEFINITION OF THE FUNCTION OR PROCEDURE DID NOT SPECIFY THIS ACTION

Explication
L’environnement actuel n’autorise pas les instructions SQL qui modifient les données. L’une des situations suivantes s’est produite :

  • Une fonction définie par l’utilisateur ou une procédure stockée object-name a été invoquée et a tenté de modifier des données, mais la fonction ou la procédure a été définie sans l’option MODIFIES SQL.
  • Une fonction définie par l’utilisateur ou une procédure stockée object-name a été invoquée et a tenté d’exécuter une instruction de définition de données, mais la fonction ou la procédure a été définie sans l’option MODIFIES SQL.
  • Une fonction ou procédure définie avec READS SQL DATA, CONTAINS SQL ou NO SQL a tenté d’appeler une autre fonction ou procédure définie avec MODIFIES SQL DATA.
  • Une fonction définie par l’utilisateur ou une procédure stockée object-name a été invoquée et a tenté d’utiliser une expression NEXT VALUE. Cependant, la fonction ou la procédure a été définie sans l’option MODIFIES SQL DATA.

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 effet ne permet pas de modifier les données.

Action du système
L’instruction ne peut pas être traité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 qui modifient les données, ou supprimez l’instruction SQL défaillante de la fonction ou de la procédure externe.

SQLSTATE
38002

CODE RETOUR -575

OBJECT object-name (OBJECT TYPE object-type) CANNOT BE REFERENCED EXPLICITLY OR IMPLICITLY

Explication
L’instruction fait référence à un objet, mais l’objet ne peut pas être utilisé comme demandé.

object-name
Le nom de l’objet référencé.
object-type
Le type d’objet qui a été référencé. Les valeurs possibles incluent :

VIEW
Une modification a été apportée à une table sous-jacente à la vue de l’object-name , ce qui a rendu la définition de la vue invalide. La vue doit être régénérée avec succès avec une instruction ALTER VIEW avant de pouvoir être référencée dans une instruction autre que ALTER VIEW, GRANT, REVOKE, DROP, COMMENT ou LABEL. Emettez une instruction ALTER VIEW pour régénérer la vue.

ROW PERMISSION
L’autorisation de ligne de object-name n’est pas valide car une tentative précédente de la régénérer a échoué. L’autorisation de ligne doit être désactivée avant que la table de contrôle d’accès aux lignes puisse être référencée. Pour corriger l’état non valide, l’autorisation de ligne doit être supprimée et recréée avec une définition modifiée.

COLUMN MASK
Le masque de colonne de object-name n’est pas valide car une tentative précédente de le régénérer a échoué. Le masque de colonne doit être désactivé avant que la table de contrôle d’accès aux colonnes puisse être référencée. Pour corriger l’état invalide, le masque de colonne doit être supprimé et recréé avec une définition modifiée.

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

Réponse du programmeur
Prenez les mesures correctives suggérées.

SQLSTATE
51024

CODE RETOUR -574

THE SPECIFIED DEFAULT VALUE OR IDENTITY ATTRIBUTE VALUE CONFLICTS WITH THE DEFINITION OF COLUMN column-name

Explication
Une valeur spécifiée pour une colonne n’est pas valide.

column-name
Le nom de la colonne.

Les raisons possibles de cette erreur incluent :

  • La valeur n’est pas attribuable à la colonne car la constante n’est pas conforme au format d’une constante de ce type de données, ou la valeur a une longueur ou une précision incorrecte.
  • Une constante à virgule flottante est spécifiée et la colonne n’est pas un type de données à virgule flottante.
  • Une constante décimale est spécifiée et les chiffres non nuls seraient tronqués lors de l’affectation à la colonne.
  • La valeur est supérieure à 255 octets, y compris les guillemets pour les chaînes, les caractères d’introduction tels que le X pour une constante hexadécimale, les noms de fonctions complets et les parenthèses.
  • Le registre spécial USER, SESSION_USER ou CURRENT SQLID est spécifié et l’attribut de longueur de la colonne de chaîne de caractères n’est pas suffisant pour stocker une valeur de 8 caractères lorsque la valeur est exprimée dans le CCSID 37.
  • Une fonction de distribution générée par le système a été spécifiée et la colonne n’est pas définie avec un type distinct défini par l’utilisateur.
  • Une fonction spécifiée n’est pas prise en charge. Une fonction ne peut être spécifiée que lorsque le type de données est un type distinct et, dans ce cas, la fonction spécifiée doit être l’une des fonctions de transtypage générées par le système associées à ce type distinct.
  • Une valeur avec une échelle non nulle a été spécifiée pour l’option START WITH ou INCREMENT BY d’une colonne d’identité avec le type de données DECIMAL.
  • Une constante décimale à virgule flottante (DECFLOAT) est spécifiée. Une virgule flottante décimale ne peut pas être limitée aux nombres d’échelle zéro et, en tant que telle, ne peut pas être utilisée dans les colonnes IDENTITY.
  • WITH DEFAULT est spécifié à l’aide d’une valeur autre que NULL pour une colonne LOB sans attribut INLINE LENGTH.
  • La longueur de la valeur par défaut est supérieure à l’attribut INLINE LENGTH de la colonne LOB.
  • Une valeur par défaut a été spécifiée pour une colonne d’horodatage avec fuseau horaire, mais la valeur par défaut ne contient pas de fuseau horaire.

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

Réponse du programmeur
Spécifiez une valeur par défaut valide pour la définition de la colonne et relancez l’instruction.

SQLSTATE
42894

CODE RETOUR -573

TABLE table-name DOES NOT HAVE A UNIQUE KEY WITH THE SPECIFIED COLUMN NAMES

Explication
Une contrainte référentielle ne peut pas être définie avec la table spécifiée comme parent car un index unique avec les noms de colonne spécifiés n’existe pas pour la table parent identifiée.

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

Réponse du programmeur
Créez un index unique avec les colonnes spécifiées pour la table parent.

SQLSTATE
42890

CODE RETOUR -571

THE STATEMENT WOULD RESULT IN A MULTIPLE SITE UPDATE

Explication
Ce SQLCODE est émis dans les situations suivantes :

  • Lorsqu’un programme d’application fonctionnant dans un environnement IMS ou CICS® tente de modifier des données à un emplacement distant où les fonctionnalités de mise à jour multisite ne sont pas prises en charge.
  • Lorsqu’un programme d’application comporte des instructions SQL explicites dans une portée de validation qui entraîneraient des mises à jour sur plusieurs sites où l’un des sites sur lesquels les données sont mises à jour ne prend pas en charge la mise à jour multisite.

Ce SQLCODE peut être émis lorsqu’un programme d’application modifie explicitement des données à un emplacement unique dans une portée de validation. Cela peut se produire dans les situations suivantes :

  • Un package associé au programme d’application a été invalidé.
  • Un package ou un plan a été lié à une version de Db2 et le repli se produit vers une version antérieure.

Dans les situations décrites ci-dessus, une liaison automatique implicite est effectuée au nom de l’utilisateur. Une liaison automatique entraîne la mise à jour du catalogue Db2. Les conditions qui doivent exister pour que ce SQLCODE soit émis lorsqu’une liaison automatique se produit sont :

  • Un site sur lequel les données ont été modifiées ne prend pas en charge la mise à jour multi-sites.
  • La liaison automatique se produit sur un site séparé et distinct à partir duquel un programme d’application modifie explicitement les données.
  • Au moment de la liaison automatique, des verrous sont maintenus pour traiter une instruction SQL dans le programme d’application.

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

Réponse du programmeur

  • Assurez-vous que toutes les demandes de modification des données sont confinées à un seul emplacement dans une portée de validation donnée pour toute application faisant référence à un emplacement qui ne prend pas en charge la mise à jour multisite.
  • Pour les programmes fonctionnant dans un environnement IMS ou CICS où les systèmes de base de données distants ne prennent pas en charge la mise à jour multisite, toutes les instructions SQL doivent être en lecture seule.
  • Si une liaison automatique provoque l’émission de ce SQLCODE, REBINDEZ le plan ou le package.

SQLSTATE
25000

CODE RETOUR -567

bind-type AUTHORIZATION ERROR USING auth-id AUTHORITY PACKAGE = package-name PRIVILEGE = privilege

Explication
L’ID d’autorisation donné n’a pas le privilège indiqué et ne peut pas appeler la sous-commande indiquée sur le package indiqué.

bind-type
Type de sous-commande de liaison (BIND | REBIND | FREE).
auth-id
ID d’autorisation du propriétaire du package.
package-name
Nom du package (location.collection.package.version)

privilege
Nom du privilège non détenu :

  • BINDADD—Le droit de créer un nouveau package à l’aide de BIND avec l’option ADD.
  • BIND—Le droit de lier (REPLACE) ou de REBIND un package.
  • COPIER—Le pouvoir de COPIER à partir du paquet indiqué
  • CREATE IN—Le droit de créer un package dans la collection indiquée.

Si vous utilisez un contexte approuvé, le jeton auth-id peut renvoyer un rôle au lieu d’un ID d’autorisation. Un rôle est renvoyé si un rôle était en vigueur et la vérification d’autorisation est effectuée par rapport au rôle, plutôt qu’à l’ID d’autorisation de la session, lorsque la condition a été rencontrée. Sinon, un ID d’autorisation est renvoyé. Un rôle est renvoyé au format suivant sous la forme d’un jeton unique :
– ROLE : role-name

Action du système
Le package indiqué n’est ni lié, ni repris, ni libéré.

Réponse du programmeur système
Le privilège indiqué doit être accordé à l’ID d’autorisation qui deviendra le propriétaire du package.

SQLSTATE
42501

CODE RETOUR -562

THE SPECIFIED PRIVILEGES CANNOT BE GRANTED TO PUBLIC.

Explication
L’instruction GRANT a tenté d’accorder l’un des privilèges suivants l’autorisation réservé à l’IDPUBLIC (public) :

  • System DBADM
  • ACCÈS AUX DONNÉES
  • ACCESSCTRL
  • CREATE_SECURE_OBJECT

Ces privilèges ne peuvent pas être accordés à PUBLIC (public).

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

Réponse du programmeur
Modifiez l’instruction pour spécifier un privilège qui peut être accordé à PUBLIC ou spécifiez un bénéficiaire autre que PUBLIC.

SQLSTATE
42508