Archives de catégorie : SQLCODE

CODE RETOUR -611

ONLY LOCKMAX 0 CAN BE SPECIFIED WHEN THE LOCK SIZE OF THE TABLESPACE IS TABLESPACE OR TABLE

Explication
Ce message est émis lorsque :

  • Le LOCKSIZE de l’espace table est TABLESPACE ou TABLE, et LOCKMAX est modifié ou créé en tant que valeur différente de zéro.
  • Le LOCKSIZE de l’espace table est modifié en TABLESPACE ou TABLE, et LOCKMAX est modifié ou créé en tant que valeur différente de zéro.

Si LOCKSIZE est TABLESPACE ou TABLE, LOCKMAX doit être égal à 0 car l’escalade de verrou n’est pas prise en charge à partir de ces niveaux.

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

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

  • Relancez l’instruction avec LOCKMAX 0.
  • Remplacez le LOCKSIZE de l’espace table par une valeur autre que TABLESPACE ou TABLE.

SQLSTATE
53088

CODE RETOUR -607

OPERATION OR OPTION operation IS NOT DEFINED FOR THIS OBJECT

Explication
L’opération ou l’option ne peut pas être exécutée sur l’objet spécifié dans l’instruction SQL.

Par exemple, ce code SQL peut être émis pour les situations suivantes :

  • La propriété de la plupart des objets système ne peut pas être transférée si leur PROPRIÉTAIRE est SYSIBM ou si leur schéma commence par SYS.
  • LOGGED et NOT LOGGED ne peuvent pas être définis lorsque vous créez ou modifiez un espace table dans la base de données du catalogue Db2 (DSNDB06).
  • Les objets de catalogue et de répertoire ne peuvent pas être clonés.
  • Les opérations de modification de données telles que celles-ci ne peuvent pas être effectuées sur une table de répertoire :
    1. ALTER TABLE
    2. ALTER TABLESPACE
    3. DELETE
    4. MERGE
    5. UPDATE
    6. RENAME TABLE
  • Les opérations suivantes ne sont pas autorisées pour un index sur une table de répertoire :
    1. ALTER INDEX
    2. CREATE INDEX
    3. DROP INDEX
    4. RENAME INDEX
  • Une table de répertoire ne peut pas être :
    1. La table parente dans une relation référentielle
    2. La table de déclenchement dans un déclencheur
  • Une instruction ALTER TABLE qui spécifie une opération ne peut pas être spécifiée sur une table de catalogue.
  • Une spécification de période ne doit pas être utilisée si la référence de table n’est pas une table.
  • L’opération est une instruction SELECT et une cible de l’opération est un objet de répertoire. Db2 ne peut pas convertir l’instruction SELECT au niveau d’isolement UR. Par exemple, l’instruction SQL suivante ne peut pas être exécutée car l’opération SELECT sur l’objet de répertoire SYSIBM.SYSLGRNX ne peut pas être convertie au niveau d’isolement UR :

UPDATE T1 SET C1 = (SELECT C1 FROM T1) WHERE EXISTS(SELECT LGRDBID FROM SYSIBM.SYSLGRNX);

  • FL 508 Une instruction ALTER TABLESPACE qui inclut une clause MOVE TABLE ne doit pas spécifier un espace table de catalogue ou de répertoire.

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

Réponse du programmeur
Si une option de l’instruction SQL n’est pas autorisée pour cet objet, modifiez l’instruction SQL et soumettez à nouveau l’instruction. Si une opération n’est pas définie pour l’objet, l’instruction ne peut pas être exécutée.

SQLSTATE
42832

CODE RETOUR -604

A DATA TYPE DEFINITION SPECIFIES AN INVALID ATTRIBUTE SUCH AS LENGTH, PRECISION, OR SCALE ATTRIBUTE

Explication
Une définition de type de données dans une instruction CREATE ou ALTER est incorrecte de l’une des manières suivantes :

  • La définition du type de données contient une spécification d’attribut de longueur, de précision ou d’échelle non valide.
  • La spécification du type de données peut être incorrecte ou invalide.
  • La définition de colonne dans une vue référencée dans une instruction de vue CREATE TABLE LIKE a une longueur non valide.

Action du système
L’instruction ne peut pas être traitée. L’objet spécifié n’a pas été créé ou modifié.

Réponse du programmeur
Corrigez la syntaxe de l’instruction comme suit et soumettez à nouveau l’instruction :

  • Corrigez la définition du type de données dans l’instruction pour avoir un attribut de longueur, de précision ou d’échelle valide.
  • Assurez-vous que les types de données spécifiés sont valides pour l’instruction CREATE ou ALTER.
  • Corrigez la longueur non valide dans la définition de colonne de la vue référencée dans l’instruction CREATE TABLE LIKE.

SQLSTATE
42611

CODE RETOUR -603

A UNIQUE INDEX CANNOT BE CREATED BECAUSE THE TABLE CONTAINS ROWS WHICH ARE DUPLICATES WITH RESPECT TO THE VALUES OF THE IDENTIFIED COLUMNS AND PERIODS

Explication
L’index défini dans l’instruction CREATE INDEX n’a pas pu être créé comme unique car la table spécifiée contient déjà des lignes en double par rapport aux valeurs des colonnes et des périodes identifiées.

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

Réponse du programmeur
Examinez les données pour déterminer si les données en double sont valides ou non. Vous pouvez également envisager de créer un index non unique.

SQLSTATE
23515

CODE RETOUR -602

TOO MANY COLUMNS, PERIODS, OR KEY-EXPRESSIONS SPECIFIED IN A CREATE INDEX OR ALTER INDEX STATEMENT

Explication
L’une des spécifications suivantes dans une instruction CREATE INDEX ou ALTER INDEX dépasse la valeur maximale autorisée de 64 :

  • La somme du nombre de colonnes et du double du nombre de périodes identifiées : colonnes + (2 × periods)
  • Le nombre de key-expressions.

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

Réponse du programmeur
Modifiez la définition de l’index pour qu’elle soit conforme à la limite de colonne ou d’expression clé imposée par le système de 64.

SQLSTATE
54008

CODE RETOUR -594

ATTEMPT TO CREATE A NULLABLE ROWID OR DISTINCT TYPE COLUMN column-name

Explication
Une instruction CREATE VIEW a tenté de créer une nouvelle vue avec une colonne ROWID null. Les colonnes ROWID (ou les colonnes de type distinct pour lesquelles le type source est un ROWID) ne prennent pas en charge les valeurs NULL. L’une des situations suivantes s’est produite :

  • La sous-sélection d’une instruction CREATE VIEW implique une jointure externe pour laquelle une colonne de la table de résultats est une colonne ROWID qui doit autoriser les valeurs NULL.

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

Réponse du programmeur
Modifiez le contenu de l’instruction afin qu’elle n’essaie pas de créer une colonne ROWID qui doit autoriser les valeurs NULL.

SQLSTATE
42831

CODE RETOUR -593

NOT NULL MUST BE SPECIFIED FOR column-name BECAUSE IT IS DEFINED AS A ROWID (OR DISTINCT TYPE FOR ROWID), ROW CHANGE TIMESTAMP COLUMN, ROW BEGIN COLUMN, ROW END COLUMN, OR COLUMN OF A PERIOD column-name

Explication
La clause NOT NULL a été spécifiée pour une colonne dont le type n’autorise pas les valeurs NULL.

column-name
Le nom de la colonne qui requiert la clause NOT NULL.
Les colonnes suivantes n’autorisent pas les valeurs nulles :

  • Colonnes ROWID
  • Colonnes de type distinct pour lesquelles le type de source est ROWID
  • Colonnes timestamp de changement de ligne
  • Colonnes de début de ligne et colonnes de fin de ligne
  • Colonnes d’une période

Lorsqu’une de ces colonnes est définie dans une instruction CREATE TABLE, ALTER TABLE ou DECLARE TABLE, la clause NOT NULL doit être spécifiée pour la colonne.

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

Réponse du programmeur
Modifiez l’instruction pour spécifier la clause NOT NULL.

SQLSTATE
42831

CODE RETOUR -592

NOT AUTHORIZED TO CREATE OR ALTER FUNCTIONS, PROCEDURES, OR TRIGGERS IN WLM ENVIRONMENT env-name

Explication
Ce message est émis lorsque la vérification de l’autorisation de l’environnement d’application WLM dans le jeton env-name a échoué.

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

Réponse du programmeur
Pour corriger l’erreur, choisissez une valeur différente pour le mot clé ENVIRONNEMENT WLM ou demandez à l’administrateur système l’autorisation de créer des objets dans l’ENVIRONNEMENT WLM spécifié. Ensuite, réexécutez l’instruction SQL.

SQLSTATE
42510

CODE RETOUR -590

NAME name IS NOT UNIQUE IN THE CREATE OR ALTER FOR ROUTINE OR TRIGGER object-name

Explication
Le nom spécifié pour un paramètre, une variable SQL, un curseur, une étiquette ou une condition dans une instruction CREATE ou ALTER pour une routine ou un déclencheur avancé n’est pas unique.

name
Le nom de l’élément qui n’est pas unique dans la routine ou le déclencheur.
object-name
Le nom de la routine ou du déclencheur qui contient les noms d’éléments en double.

La valeur de name doit respecter les règles suivantes :

  • Un nom de paramètre doit être unique dans la liste de paramètres.
  • Un nom de variable SQL doit être unique dans l’instruction composée dans laquelle il est déclaré, à l’exclusion de toute déclaration dans les instructions composées imbriquées dans l’instruction composée qui déclare la variable SQL.
  • Un nom de variable SQL ne doit pas être le même qu’un nom de paramètre.
  • Un nom de curseur doit être unique dans la routine ou le déclencheur dans lequel il est déclaré, à l’exclusion de toute déclaration dans les instructions composées imbriquées dans l’instruction composée qui déclare le curseur.
  • Un nom de condition doit être unique dans l’instruction composée dans laquelle il est déclaré, à l’exclusion de toute déclaration dans les instructions composées imbriquées dans l’instruction composée qui déclare la condition.
  • Une étiquette doit être unique dans une instruction composée, y compris toutes les étiquettes dans les instructions composées qui sont imbriquées dans l’instruction composée qui définit l’étiquette.

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

Réponse du programmeur
Modifiez le nom pour qu’il soit unique.

SQLSTATE
42734

CODE RETOUR -589

A POSITIONED DELETE OR UPDATE STATEMENT FOR CURSOR cursor-name SPECIFIED A ROW OF A ROWSET, BUT THE CURSOR IS NOT POSITIONED ON A ROWSET

Explication
La clause FOR ROW n OF ROWSET a été spécifiée sur une instruction DELETE ou UPDATE positionnée, mais le curseur n’est actuellement pas positionné sur un ensemble de lignes.

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

Réponse du programmeur
Exécutez une instruction FETCH pour positionner le curseur sur l’ensemble de lignes correct, puis réexécutez l’instruction DELETE ou UPDATE positionnée. Si le curseur n’est pas défini pour l’accès à l’ensemble de lignes, redéfinissez d’abord le curseur.

SQLSTATE
24520