Archives de catégorie : SQLCODE

CODE RETOUR -554

AN AUTHORIZATION ID OR ROLE CANNOT GRANT A PRIVILEGE TO ITSELF

Explication
Un ID d’autorisation ou un rôle a tenté d’exécuter une instruction GRANT dans laquelle cet ID lui-même apparaît comme l’une des entrées de la liste des ID d’autorisation ou des noms de rôle « bénéficiaire ».

Un ID d’autorisation ou un rôle ne peut pas s’accorder un privilège. Cependant, si SQLRULES(STD) est en vigueur ou si CURRENT RULES contient STD, GRANT à elle-même est autorisé.

Action du système
L’instruction ne peut pas être traitée. Aucun privilège n’a été accordé.

Réponse du programmeur
Supprimez la référence à l’ID d’autorisation qui a émis l’instruction GRANT de la liste des ID d’autorisation des bénéficiaires.

SQLSTATE
42502

CODE RETOUR -553

AUTHORIZATION ID OR SCHEMA NAME name SPECIFIED IS NOT VALID FOR REQUESTED OPERATION

Explication
La déclaration a échoué pour l’une des raisons suivantes :

  • L’ID d’autorisation spécifié comme valeur de name ou de variable hôte dans l’instruction SQL SET CURRENT SQLID n’est ni l’ID d’autorisation principal de l’utilisateur ni l’un des ID d’autorisation secondaires associés.
  • L’ID d’autorisation spécifié comme valeur de l’option PACKAGE OWNER pour une instruction CREATE ou ALTER PROCEDURE n’est ni l’ID d’autorisation principal de l’utilisateur ni l’un des ID d’autorisation secondaires associés.
  • SYSPUBLIC ne peut pas être spécifié comme schéma d’un alias privé pour une séquence. Les noms de schéma ne doivent pas commencer par « SYS », car des schémas supplémentaires commençant par ces lettres pourraient être réservés à l’usage exclusif des produits Db2 à l’avenir.

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

Réponse de l’utilisateur
Remplacez le name par une valeur que l’utilisateur peut utiliser.

SQLSTATE
42503

CODE RETOUR -552

authorization-id DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION operation

Explication
Une opération a été tentée par un ID d’autorisation qui n’a pas l’autorité requise.

authorization-id
L’ID d’autorisation qui a tenté d’effectuer l’opération.
Si vous utilisez un contexte approuvé, la valeur authorization-id peut être 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 DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION operation

operation
L’opération qui a été tentée.

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

Réponse de l’administrateur
Recherchez une tentative de violation d’autorisation.

Réponse du programmeur
Assurez-vous que l’ID d’autorisation a reçu l’autorité nécessaire pour effectuer l’opération.

L’autorité SECADM est requise pour révoquer l’un des éléments suivants :

  • Droits DBADM système
  • Autorité DATAACCESS
  • Autorité ACCESSCTRL
  • Privilège CREATE_SECURE_OBJECT

SQLSTATE
42502

CODE RETOUR -549

THE statement STATEMENT IS NOT ALLOWED FOR object_type1 object_name BECAUSE THE BIND OPTION DYNAMICRULES(RUN) IS NOT IN EFFECT FOR object_type2

Explication
Un programme a tenté d’émettre l’instruction SQL indiquée qui est l’une des nombreuses instructions SQL qui ne peuvent pas être émises à partir d’un plan ou d’un package pour lequel l’option DYNAMICRULES(RUN) n’est pas en vigueur. Ces instructions SQL sont :

  • Instruction GRANT dynamique
  • Instruction REVOKE dynamique
  • Instruction ALTER dynamique
  • Instruction CREATE dynamique
  • Instruction DROP dynamique

L’instruction SQL indiquée est liée à l’un des éléments suivants :

  • Le plan ou package nommé qui n’était pas lié à l’option DYNAMICRULES(RUN)
  • Le package nommé qui n’était pas lié à l’option DYNAMICRULES, mais qui est ajouté à un plan qui n’était pas lié à DYNAMICRULES(RUN)

statement
L’instruction SQL en erreur
object_type1
FORFAIT ou DBRM
object_name
Si object_type1 est PACKAGE, object_name est le nom du package au format ‘location-id.collection-id.package-id’.
Si object_type1 est DBRM, object_name est le nom du DBRM au format « plan-name DBRM-name ».

object_type2
PLAN ou FORFAIT
Si object_type1 est PACKAGE, object_type2 peut être PACKAGE ou PLAN (selon celui qui est lié à une valeur DYNAMICRULES autre que RUN).

Si object_type1 est DBRM, object_type2 est PLAN.

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

Réponse du programmeur
Effectuez l’une des actions suivantes pour corriger l’erreur :

  • Si l’instruction SQL est incorporée, supprimez-la, précompilez et compilez à nouveau le programme d’application, puis relancez la commande BIND avec l’option DYNAMICRULES appropriée.
  • Utilisez l’instruction SQL avec un package ou un plan lié à DYNAMICRULES(RUN).
  • Exécutez la commande REBIND avec l’option DYNAMICRULES(RUN) pour le plan ou le package auquel l’instruction SQL est liée.

Déterminez si l’instruction SQL doit être supprimée du programme ou si le plan ou le package doit être rebondi avec l’option DYNAMICRULES(RUN).

SQLSTATE
42509

CODE RETOUR -548

A CHECK CONSTRAINT THAT IS DEFINED WITH column-name IS INVALID

Explication
Une contrainte de vérification dans l’instruction CREATE TABLE ou ALTER TABLE n’est pas valide pour une ou plusieurs des raisons suivantes :

  • La définition de contrainte fait référence à une colonne qui a une procédure de champ.
  • La définition de contrainte fait référence à une colonne avec un type de données qui est plus bas dans la hiérarchie des types de données numériques que le type de données de tout autre opérande. La hiérarchie est la suivante :
small integer < large integer 
  < big integer < decimal
  < single precision float 
  < double precision float
  • La définition de contrainte fait référence à une colonne avec un type de données numériques qui n’a pas le même type de données numériques que celui des autres opérandes de colonne.
  • La définition de contrainte fait référence à une colonne dont la longueur est plus courte que les autres opérandes lorsque la colonne et les autres opérandes ne sont pas des types de données chaîne de caractères.
  • La définition de contrainte fait référence à une colonne ROWID.
  • La définition de contrainte fait référence à une colonne LOB.
  • La définition de contrainte fait référence à une colonne DECFLOAT.
  • La définition de contrainte fait référence à une colonne Unicode Db2 11 dans une table EBCDIC.
  • La contrainte contient une colonne XML.
  • La définition de contrainte contient une expression XMLQuery.
  • Une liste d’arguments XMLQUERY ou XMLEXISTS contenait deux arguments portant le même nom.
  • L’expression de colonne générée fait référence à une colonne pour un masque de colonne est défini.
  • La définition de contrainte contient une fonction intégrée qui dépend de la valeur d’un registre spécial.
  • La définition de contrainte contient une variable globale.

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

Pour ALTER TABLE, la contrainte de vérification n’est pas ajoutée à la table d’objets. La définition de la table est inchangée.

Pour CREATE TABLE, la table n’est pas créée.

Réponse du programmeur
Corrigez la définition de la contrainte de vérification et exécutez à nouveau l’instruction.

SQLSTATE
42621

CODE RETOUR -546

THE CHECK CONSTRAINT constraint-name IS INVALID

Explication
Une contrainte de vérification dans l’instruction CREATE TABLE ou ALTER TABLE n’est pas valide pour une ou plusieurs des raisons suivantes :

  • La définition de contrainte fait référence à une colonne qui a une procédure de champ.
  • La définition de contrainte fait référence à une colonne avec un type de données qui est plus bas dans la hiérarchie des types de données numériques que le type de données de tout autre opérande. La hiérarchie est la suivante :
small integer < large integer < decimal  
< single precision float 
< double precision float
  • La définition de contrainte fait référence à une colonne avec un type de données numériques qui n’est pas le même type de données numériques que celui des autres opérandes de colonne.
  • La définition de contrainte fait référence à une colonne dont la longueur est plus courte que les autres opérandes lorsque la colonne et les autres opérandes ne sont pas des types de données chaîne de caractères.
  • La définition de contrainte fait référence à une colonne DECFLOAT.
  • La définition de contrainte fait référence à une colonne Unicode Db2 11 dans une table EBCDIC.
  • La définition de contrainte fait référence à une fonction intégrée ou définie par l’utilisateur.
  • La définition de contrainte utilise une fonction de conversion qui nécessite la conversion des données. Les seules fonctions autorisées dans une contrainte de vérification sont les fonctions de conversion qui ne nécessitent pas de conversion des données.
  • La définition de contrainte contient une variable globale.
  • La contrainte contient une colonne XML
  • La définition de contrainte contient une expression XMLQuery.

constraint-name
Nom de la contrainte de vérification.

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

Pour ALTER TABLE, la contrainte de vérification n’est pas ajoutée à la table d’objets. La définition de la table est inchangée.

Pour CREATE TABLE, la table n’est pas créée.

Réponse du programmeur
Corrigez la définition de la contrainte de vérification et exécutez à nouveau l’instruction.

SQLSTATE
42621

CODE RETOUR -545

THE REQUESTED OPERATION IS NOT ALLOWED BECAUSE A ROW DOES NOT SATISFY THE CHECK CONSTRAINT check-constraint

Explication
Vérifiez que des violations de contrainte se sont produites sur une instruction INSERT, UPDATE ou MERGE. La ligne résultante a violé la définition de contrainte de vérification sur la table.

Action du système
L’instruction INSERT, UPDATE ou MERGE ne peut pas être exécutée. Le contenu du tableau est inchangé.

Réponse du programmeur
Examinez les données et la définition de contrainte de vérification dans la table de catalogue SYSIBM.SYSCHECKS pour déterminer pourquoi l’instruction INSERT, MERGE, DELETE ou UPDATE a été rejetée. Les données doivent être modifiées pour satisfaire la contrainte de vérification.

SQLSTATE
23513

CODE RETOUR -544

THE CHECK CONSTRAINT SPECIFIED IN THE ALTER TABLE STATEMENT CANNOT BE ADDED BECAUSE AN EXISTING ROW VIOLATES THE CHECK CONSTRAINT

Explication
Une ligne existante viole la contrainte de vérification spécifiée dans l’instruction ALTER TABLE.

Action du système
L’instruction ne peut pas être traitée. La définition de contrainte de vérification n’est pas ajoutée à la table. La définition de la table est inchangée.

Réponse du programmeur
Examinez la définition de contrainte de vérification qui a été spécifiée dans l’instruction ALTER TABLE et les données de la table pour déterminer pourquoi l’instruction ALTER TABLE a été rejetée.

Vous pouvez déterminer quelles lignes ont violé la contrainte de vérification à l’aide de l’instruction SELECT, annulant la contrainte de vérification dans la clause WHERE.

Par exemple:

SELECT * FROM table WHERE (NOT (check-condition));


SQLSTATE
23512

CODE RETOUR -543

A ROW IN A PARENT TABLE CANNOT BE DELETED BECAUSE THE CHECK CONSTRAINT check-constraint RESTRICTS THE DELETION

Explication
L’opération de suppression ne peut pas être exécutée car la table cible est une table parent et est connectée avec une contrainte référentielle à une table dépendante avec une règle de suppression SET NULL. Cependant, une contrainte de vérification définie sur la table dépendante empêche la colonne de contenir une valeur nulle.

Action du système
L’instruction DELETE n’a pas été exécutée. Le contenu des tableaux est inchangé.

Réponse du programmeur
Examinez la clé étrangère et sa règle de suppression dans la table dépendante et la contrainte de vérification en conflit. Modifiez la règle de suppression ou la contrainte de vérification afin qu’elles n’entrent pas en conflit.

SQLSTATE
23511

CODE RETOUR -526

THE REQUESTED OPERATION OR USAGE DOES NOT APPLY TO table-type TEMPORARY TABLE table-name

Explication
DB2 suppose que l’instruction SQL en cours d’exécution fait référence à une table temporaire créée ou déclarée, nommée  table-name , et que l’opération ou l’utilisation demandée dans l’instruction n’est pas autorisée sur la table temporaire.

table-type
CREATED ou DECLARED
CREATED est pour une table temporaire définie par l’instruction CREATE GLOBAL TEMPORARY TABLE.

DECLARED concerne une table temporaire définie par l’instruction DECLARE GLOBAL TEMPORARY TABLE.

table-name
Nom qualifié de la table temporaire.

Cette erreur peut être émise pour les raisons suivantes lorsque le table-type est CREATED :

  • Si l’instruction SQL est une instruction DELETE qui spécifie la clause d’extraction, supprimez la clause d’extraction de l’instruction DELETE.
  • Une clause KEY LABEL est spécifiée.

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

Réponse du programmeur
Modifiez l’instruction SQL pour vous assurer que les références d’objet ne sont pas au type de table temporaire indiqué

Si le table-type est DÉCLARÉ et que vous souhaitiez que table-name fasse référence à une table de base persistante existante, vous devez effectuer l’une des actions suivantes :

  • Recréez la table de base persistante table-name avec un autre qualificateur de schéma
  • Dans le même processus d’application, émettez un DROP TABLE pour le nom de la table table-name suivi d’un COMMIT pour supprimer la table temporaire déclarée et pouvoir ensuite référencer la table de base persistante avec le même table-name dans le même processus d’application
  • Supprimez l’instruction DECLARE GLOBAL TEMPORARY TABLE du processus d’application pour utiliser la table de base persistante avec le même nom de table

Si table-type est CREATED, effectuez l’action suivante et relancez l’instruction :

  • Si l’instruction SQL est une instruction DELETE qui spécifie la clause d’extraction, supprimez la clause d’extraction de l’instruction DELETE.
  • Si l’instruction SQL contient une clause KEY LABEL, supprimez la spécification d’étiquette de clé.

SQLSTATE
42995