Archives de catégorie : SQLCODE

CODE RETOUR -191

A STRING CANNOT BE USED BECAUSE IT IS INVALID MIXED DATA

Explication :
L’opération nécessitait la conversion d’une chaîne de caractères de données mixtes en un jeu de caractères codés différent. La chaîne n’a pas pu être convertie car elle n’est pas conforme aux règles relatives aux données mixtes bien formées.

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

Réponse du programmeur :
Si la chaîne contient les informations souhaitées, la description de la colonne ou de la variable hôte doit être modifiée de MIXED DATA en BIT ou SBCS DATA. Si la description de la colonne ou de la variable hôte est correcte, la chaîne est le problème et elle doit être modifiée pour se conformer aux règles des données mixtes bien formées.

ETATSQL :
22504

CODE RETOUR -190

THE ATTRIBUTES SPECIFIED FOR THE COLUMN table-name.column-name ARE NOT COMPATIBLE WITH THE EXISTING COLUMN DEFINITION

Explication :
Les attributs de la colonne dans une instruction ALTER TABLE ne sont pas compatibles avec les attributs de la colonne existante.

table-name
Le nom de la table.
column-name
Le nom de la colonne.

Les raisons possibles de cette erreur incluent :

Type de données incompatible
L’instruction ALTER TABLE ALTER COLUMN SET DATA TYPE permet de modifier les colonnes des types de données suivants uniquement :

  • Personnage
  • Numérique
  • Binaire

Si la clause SET DATA TYPE a été spécifiée, la colonne existante n’est pas compatible avec le nouveau type de données qui a été spécifié ou est d’un type de données qui ne peut pas être modifié.

La colonne Identité est obligatoire
Les clauses suivantes ne peuvent être spécifiées que pour une colonne définie comme colonne d’identité :

  • RESTART
  • SET GENERATED
  • SET INCREMENT BY
  • SET MINVALUE and SET NO MINVALUE
  • SET MAXVALUE and SET NO MAXVALUE
  • SET CYCLE and SET NO CYCLE
  • SET CACHE and SET NO CACHE
  • SET ORDER and SET NO ORDER

Si l’une de ces clauses a été spécifiée, la colonne existante n’est pas définie en tant que colonne d’identité.

Les valeurs par défaut
Si une clause SET DEFAULT ou DROP DEFAULT a été spécifiée, la colonne existante soit :

  • N’a pas de valeur par défaut définie, ou la colonne a NOT NULL comme attribut null.
  • Est défini comme colonne d’identité, ROWID ou colonne d’horodatage de changement de ligne.

Modification des colonnes ROW BEGIN, ROW END ou TRANSACTION START ID
Si ALTER COLUMN a été spécifié pour remplacer la colonne par une colonne ROW BEGIN, ROW END ou TRANSACTION START ID :

  • La colonne est déjà définie en tant que colonne générée.
  • La colonne est déjà définie avec une valeur par défaut spécifiée par l’utilisateur. Exécutez une instruction ALTER TABLE pour supprimer la valeur par défaut. Ensuite, la définition de la colonne peut être modifiée.

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

Réponse du programmeur :
Examinez l’instruction SQL et effectuez l’action appropriée, puis soumettez à nouveau l’instruction.

  • Modifiez l’instruction afin que les attributs spécifiés pour la colonne modifiée soient compatibles avec la définition de colonne existante.
  • Supprimez la spécification d’attribut incompatible.
  • Spécifiez une colonne différente.

ETATSQL :
42837

CODE RETOUR -189

CCSID ccsid IS INVALID

Explication :
Pour déterminer le sous-type d’une variable hôte d’entrée ou d’une colonne de résultat, la table du catalogue SYSSTRINGS a été accédée avec le CCSID spécifié et l’une des conditions d’erreur suivantes s’est produite :

  • Le CCSID n’est pas une valeur d’INCCSID ou d’OUTCCSID.
  • La colonne TRANSTYPE classe le CCSID comme GRAPHIC plutôt que CHARACTER.
  • Un CCSID graphique n’a pas été spécifié sur votre système.
  • Le CCSID est en dehors de la plage de valeurs acceptable. Le CCSID doit être compris entre 1 et 65533, inclus, ou la valeur 65535.
  • Un CCSID DBCS a été spécifié lors du transtypage vers CHAR, VARCHAR ou CLOB.
  • Un SBCS ou un CCSID mixte, ou 65535 a été spécifié lors du transtypage vers un type de données graphique.
  • Le CCSID 65535, qui n’est valide que pour les données avec l’attribut FOR BIT DATA, a été spécifié lors du transtypage vers un CLOB.

Cette erreur peut se produire lorsque SYSSTRINGS est accédé avec une paire de CCSID pour déterminer si une traduction est définie pour la paire. Dans ce cas, l’erreur est l’incohérence entre le type de données d’une chaîne et la classification TRANSTYPE de son CCSID (l’un est GRAPHIC et l’autre est CHARACTER).

Cette erreur peut également se produire lorsqu’un CCSID spécifié dans DECP n’existe pas en tant que valeur dans les colonnes INCCSID ou OUTCCSID de SYSSTRINGS.

Une autre raison pour laquelle cette erreur peut se produire est que vous utilisez peut-être l’une des fonctions graphiques intégrées, mais qu’aucun CCSID graphique n’a été spécifié lors de l’installation du système.

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

Réponse du programmeur :
Assurez-vous que le CCSID est valide et cohérent avec le type de données de la chaîne. Si un CCSID valide n’est pas répertorié dans une ligne intégrée de SYSSTRINGS, il peut être défini en insérant une ligne fournie par l’utilisateur. Si un CCSID valide est mal classé dans une ligne fournie par l’utilisateur, cette ligne peut être mise à jour pour corriger l’erreur.

Si aucun CCSID graphique n’a été spécifié lors de l’installation du système, mettez à jour votre DECP pour inclure un CCSID graphique et recyclez votre Db2.

ETATSQL :
22522

CODE RETOUR -188

THE STRING REPRESENTATION OF A NAME IS INVALID

Explication :
La variable hôte référencée dans l’instruction DESCRIBE ne contient pas de représentation sous forme de chaîne valide d’un nom. L’une des conditions d’erreur suivantes s’est produite.

  • Le premier octet de la variable est un point ou un blanc.
  • Le nombre d’identifiants est supérieur à 3.
  • Un identifiant est trop long.
  • Un point non contenu dans un identifiant délimité est suivi d’un point ou d’un blanc.
  • Un identifiant délimité est suivi d’un caractère autre qu’un point ou un blanc.
  • Un identifiant délimité ne se termine pas par un guillemet.


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

Réponse du programmeur :
Corrigez la valeur de la variable hôte afin qu’elle soit une représentation sous forme de chaîne valide d’un nom.

ETATSQL :
22503

CODE RETOUR -173

UR IS SPECIFIED ON THE WITH CLAUSE BUT THE CURSOR IS NOT READ-ONLY

Explication :
Le curseur n’est pas un curseur en lecture seule. WITH UR ne peut être spécifié que si Db2 peut déterminer que le curseur est en lecture seule.

Action du système :
L’exécution de l’instruction échoue.

Réponse du programmeur :
Si le curseur est destiné à être en lecture seule mais est ambigu, ajoutez la clause FOR FETCH ONLY. Si le curseur peut être mis à jour, modifiez le niveau d’isolement spécifié dans la clause WITH.

ETATSQL :
42801

CODE RETOUR -152

THE DROP clause CLAUSE IN THE ALTER STATEMENT IS INVALID BECAUSE constraint-name IS A constraint-type

Explication :
La clause DROP clause d’une instruction ALTER TABLE a tenté de supprimer une contrainte qui ne correspond pas au constraint-type de la clause DROP. clause doit identifier un constraint-type approprié comme suit :

REFERENTIAL CONSTRAINT
La contrainte identifiée doit être une contrainte référentielle.
CHECK CONSTRAINT
La contrainte identifiée doit être une contrainte de vérification.
PRIMARY KEY CONSTRAINT
La contrainte identifiée doit être une contrainte de clé primaire.
UNIQUE KEY CONSTRAINT
La contrainte identifiée doit être une contrainte de clé unique.


Action du système :
L’instruction ALTER TABLE DROP ne peut pas être exécutée. Aucun objet n’a été lâché.

Réponse du programmeur :
Supprimez l’objet existant avec la clause DROP correcte de l’instruction ALTER TABLE.

ETATSQL :
42809

CODE RETOUR -148

THE SOURCE TABLE OR TABLESPACE source-name CANNOT BE ALTERED, REASON reason-code

Explication :
L’instruction ALTER émise n’a pas pu être traitée.

source-name
Nom de la table ou de l’espace table source.
reason-code
La raison du message ou du code SQL, indiquée par l’une des valeurs suivantes :

01

L’instruction ALTER a spécifié une clause ALTER COLUMN qui a tenté de supprimer la valeur par défaut, de modifier la valeur par défaut ou de modifier la longueur de la colonne. La colonne ne peut pas être modifiée car la colonne a une procédure de champ ou est impliquée dans une contrainte référentielle ou de vérification. La valeur par défaut ne peut pas être modifiée car la colonne a une procédure de champ.

02

L’instruction ALTER a spécifié une clause ALTER COLUMN qui a tenté de supprimer la valeur par défaut, de modifier la valeur par défaut ou de modifier la longueur de la colonne. La colonne ne peut pas être modifiée car la table identifiée par source-name  peut être l’une des suivantes :
Une table qui a une procédure d’édition ou une procédure de validation.

03

L’instruction ALTER a spécifié une clause ALTER COLUMN qui a tenté de supprimer la valeur par défaut, de modifier la valeur par défaut ou de modifier le type de données de la colonne. La colonne ne peut pas être modifiée car la table est définie avec DATA CAPTURE CHANGES et le paramètre de sous-système RESTRICT_ALT_COL_FOR_DCC est défini sur YES.

04

L’instruction ALTER ne peut pas être utilisée pour définir une table clone car une table clone est déjà définie pour source-name.

05

L’instruction ALTER ne peut pas être utilisée pour définir une table clone car la table source-name ne se trouve pas dans un espace table universel ou dans un espace table défini avec PAGENUM RELATIVE.

06

L’instruction ALTER ne peut pas être utilisée pour définir une table clone car la table source-name est impliquée dans une contrainte référentielle ou de vérification.

07

L’instruction ALTER ne peut pas être utilisée pour définir une table clone car la table source-name a un déclencheur (after trigger) défini dessus.

08

L’instruction ALTER ne peut pas être utilisée pour définir une table clone car la table source-name est une table de requête matérialisée.

09

L’instruction ALTER ne peut pas être utilisée pour définir une table clone car la table source-name a plusieurs versions d’espace table ou d’index en cours d’utilisation.

10

L’une des raisons suivantes :
L’instruction ALTER ne peut pas être utilisée pour définir une table clone car l’espace table de la table nom-source ou un index sur la table source-name a été créé avec DEFINE NO et l’ensemble de données n’est pas encore défini.

Un objet auxiliaire pour une table source avec une colonne LOB ou XML a été créé avec DEFINE NO, et l’ensemble de données n’est pas encore défini.

11

L’instruction ALTER a tenté de modifier une table qui a un clone défini ou une table qui est un clone.

12

L’instruction ALTER ne peut pas être utilisée pour définir une table clonée car la table source-name est définie avec une procédure d’édition, une procédure de validation ou une procédure de zone.

13

L’instruction ALTER ne peut pas être traitée car un index dépasse la limite de version de 16.

14

Une instruction ALTER avec une clause ALTER COLUMN a tenté de changer le type de données de caractère FOR BIT DATA en BINARY, mais la longueur de la valeur par défaut de transtypage dépasse 1536 octets UTF-8.

15

L’instruction ALTER ne peut pas être traitée car aucune modification en attente n’est associée à l’espace table.

16

Une instruction ALTER TABLESPACE ne peut pas inclure l’option MEMBER CLUSTER YES pour l’espace table organisé par hachage.

17

L’instruction ALTER ne peut pas être utilisée pour définir une table clone car la table source-name est organisée par hachage.

18

L’instruction ALTER ne peut pas être traitée car la colonne à modifier est une colonne Unicode Db2 11 dans une table EBCDIC. Une colonne Unicode Db2 11 dans une table EBCDIC ne peut être modifiée qu’en spécifiant le même type de données, la même longueur et le même CCSID que ceux spécifiés lors de la définition initiale de la colonne avec une instruction CREATE ou ALTER TABLE. La modification migre la définition de colonne vers une colonne Db2 12 Unicode disponible à partir de l’activation du niveau de fonction 500 ou supérieur.

19

L’instruction ALTER a tenté de définir ou de modifier une étiquette de clé pour une table clone.


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

Réponse du programmeur :
Remplacez source-name par le nom d’un objet qui peut être modifié comme spécifié et réexécutez l’instruction, ou effectuez une action appropriée pour la valeur du code de raison :

01

N’essayez pas de remplacer source-name par le nom d’un objet qui peut être modifié comme spécifié et réexécutez l’instruction.

02

N’essayez pas de modifier une colonne définie avec une procédure d’édition ou une procédure valide.

03

N’essayez pas de modifier ou de supprimer la valeur par défaut, ou de modifier le type de données d’une colonne lorsque la table est définie avec DATA CAPTURE CHANGES et que le paramètre de sous-système RESTRICT_ALT_COL_FOR_DCC est défini sur YES.

04

Avant de définir une table clone, vérifiez qu’aucune table clone n’est déjà définie pour source-name.

05

Avant de définir une table clone, vérifiez que la table source-name se trouve dans un espace table universel.

06

Avant de définir une table clonée, vérifiez que la table source-name n’est pas impliquée dans une contrainte référentielle ou de vérification.

07

Avant de définir une table clone, vérifiez qu’aucun déclencheur AFTER n’est défini sur la table source-name.

08

Avant de définir une table clone, vérifiez que la table source-name n’est pas une table de requête matérialisée.

09

Avant de définir une table clonée, vérifiez que la table source-name n’a pas plus d’une version d’espace table ou d’une version d’index en cours d’utilisation.

10

Avant de définir une table clone, vérifiez que les ensembles de données pour source-name et ses index sont définis.

11

Supprimez la table clonée, puis modifiez la colonne. Utilisez une instruction ALTER TABLE avec la clause DROP CLONE.

12

Avant de définir une table clone, vérifiez que la table source-name n’a pas de procédure d’édition, de procédure valide ou de procédure de champ.

13

Réduisez le nombre de versions de l’index, puis relancez l’instruction ALTER.

14

Réduisez ou supprimez la valeur par défaut. Pour modifier la valeur par défaut, utilisez une instruction ALTER TABLE avec ALTER COLUMN SET DEFAULT. Pour supprimer la valeur par défaut, utilisez une instruction ALTER TABLE avec ALTER COLUMN DROP DEFAULT.

15

Évitez de modifier un espace table pour supprimer les modifications en attente qui n’existent pas.

16

N’essayez pas d’ajouter l’option MEMBER CLUSTER YES pour un espace table organisé par hachage.

17

N’essayez pas de définir une table clone pour une table organisée par hachage.

18

N’essayez pas de modifier une colonne Unicode Db2 11 dans une table EBCDIC.

19

N’essayez pas de définir ou de modifier une étiquette de clé pour une table clonée. Le libellé de la clé est hérité de la table de base.

ETATSQL :
42809

CODE RETOUR -147

ALTER FUNCTION function-name FAILED BECAUSE SOURCE FUNCTIONS OR SPATIAL FUNCTIONS CANNOT BE ALTERED

Explication :
La fonction ne peut pas être modifiée car il s’agit d’une fonction source ou d’une fonction spatiale. Seules les fonctions scalaires externes isolées ou les fonctions de table externes isolées peuvent être modifiées.

Pour modifier une fonction source ou une fonction spatiale existante, vous devez DROP  la fonction et la recréer.

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

Réponse du programmeur :
Modifiez l’instruction pour faire référence à une fonction qui peut être modifiée, ou recréez la fonction en la supprimant puis en créant une nouvelle version de celle-ci.

ETATSQL :
42917

CODE RETOUR -144

INVALID SECTION NUMBER number

Explication :

L’un des éléments suivants :

  • L’utilisateur a tenté d’exécuter une section non valide.
  • Cette version de DB2 ne prend pas en charge l’instruction SQL.
  • Le numéro de section dans la liste des paramètres d’appel est l’un des suivants :
    1. Négatif
    2. Un doublon invalide
    3. Supérieur au numéro de section maximal du DBRM ou du package

Action du système :

L’instruction ne peut pas être traitée.

Réponse du programmeur :
Pour le cas 1 : si vous exécutez un package lié avec SQLERROR(CONTINUE), déterminez si l’instruction en question était liée en tant que section valide. Vous pouvez utiliser les instructions suivantes pour interroger le catalogue Db2 :

  SELECT SQLERROR
FROM   SYSIBM.SYSPACKAGE
WHERE  COLLID    = collection-id AND
NAME      = package-id    AND
VERSION   = version-name;

Si cette requête renvoie ‘C’, le package était lié avec SQLERROR(CONTINUE).

  SELECT STMTNO, TEXT
FROM   SYSIBM.SYSPACKSTMT
WHERE  COLLID    = collection-id AND
NAME      = package-id    AND
VERSION   = version-name  AND
SECTNO    = number        AND
BINDERROR = 'Y';

Si cette requête renvoie des lignes, la section n’est pas valide. Reportez-vous aux messages d’erreur émis pendant la liaison pour en déterminer la cause. Corrigez les erreurs et liez à nouveau le package à l’aide de l’option REPLACE.

Pour le cas 2 : Si le système Db2 est revenu à une version précédente, déterminez s’il existe des instructions SQL avec un numéro de section de zéro qui ne sont pas prises en charge par cette version. Vous pouvez utiliser les instructions suivantes pour interroger le catalogue Db2.

Lors de l’exécution à partir d’un DBRM, utilisez :

  SELECT *
FROM   SYSIBM.SYSSTMT
WHERE  SECTNO = 0
ORDER BY NAME, PLNAME, STMTNO, SEQNO;

Lors de l’exécution à partir d’un package, utilisez :

  SELECT *
FROM   SYSIBM.SYSPACKSTMT
WHERE  SECTNO = 0
ORDER BY COLLID, NAME, VERSION, STMTNO, SEQNO;

Pour le cas 3 : Examinez l’application pour déterminer si la liste des paramètres d’appel a été modifiée d’une manière ou d’une autre. En général, vous ne devez pas essayer de modifier la sortie du précompilateur.

ETATSQL :
58003

CODE RETOUR -142

THE SQL STATEMENT IS NOT SUPPORTED

Explication :
Une instruction SQL non prise en charge par la base de données a été détectée. L’instruction peut être valide pour d’autres produits de base de données relationnelle IBM® ou elle peut être valide dans un autre contexte. Par exemple, les instructions telles que VALUES et SIGNAL ou RESIGNAL SQLSTATE ne peuvent être utilisées que dans certains contextes, comme dans un corps de déclencheur ou dans une procédure SQL.

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

Réponse du programmeur :
Modifiez la syntaxe de l’instruction SQL ou supprimez l’instruction du programme.

ETATSQL :
42612