Archives de catégorie : SQLCODE

CODE RETOUR -393

THE CONDITION OR CONNECTION NUMBER IS INVALID

Explication :
La valeur du numéro CONDITION ou CONNECTION qui a été spécifié dans l’instruction GET DIAGNOSTICS est soit inférieure à zéro, soit supérieure au nombre de diagnostics disponibles.

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

Réponse du programmeur :
Corrigez la valeur du numéro CONDITION ou CONNECTION, en vous assurant que le numéro est compris entre 1 et la valeur de l’information instruction NUMBER ou GET DIAGNOSTICS. Soumettez à nouveau l’instruction GET DIAGNOSTICS CONDITION ou GET DIAGNOSTICS CONNECTION.

SQLSTATE :
35000

CODE RETOUR -392

SQLDA PROVIDED FOR CURSOR cursor-name HAS BEEN CHANGED FROM THE PREVIOUS FETCH (reason-code)

Explication :
L’application a demandé des retours incompatibles d’instructions FETCH successives.

cursor-name
Le nom du curseur.
reason-code
Une valeur numérique qui indique la raison de l’échec. Les valeurs possibles sont :

1

L’application s’exécute avec des règles DB2 et a demandé que les données LOB soient renvoyées en tant que LOB dans une instruction FETCH et en tant que localisateur dans une autre instruction FETCH. Cette demande n’est pas autorisée.

2

L’application a demandé du XML textuel dans une instruction FETCH et du XML binaire dans une autre instruction FETCH. Cette demande n’est pas autorisée.

Si le curseur est un jeu de résultats renvoyé par une procédure stockée appelée par l’application, l’erreur d’application peut résulter d’une non-concordance avec le dernier FETCH effectué par la procédure stockée.

Action du système :
L’instruction n’est pas traitée et la connexion est interrompue.

Réponse du programmeur :
Effectuez l’action qui correspond à la valeur du reason-code :

1

Pour une incompatibilité impliquant LOB et le localisateur : Soit n’utilisez pas de règles DB2, soit modifiez l’application afin qu’elle ne modifie pas le code de type de données de LOB en localisateur (ou l’inverse) dans la SQLDA entre les extractions successives.

2

En cas de non-concordance entre XML textuel et XML binaire : modifiez l’application pour demander des données XML textuelles dans des extractions successives, ou pour demander des données XML binaires dans des extractions successives.

SQLSTATE :
42855

CODE RETOUR -390

OBJECT object-name, SPECIFIC NAME specific-name, IS NOT VALID IN THE CONTEXT WHERE IT IS USED

Explication :
L’une des situations suivantes s’est produite :

  • Une fonction résolue en une fonction spécifique qui n’est pas valide dans le contexte où elle est utilisée.
  • UNNEST a été utilisé dans un contexte où il n’est pas autorisé.

object-name
Le nom de l’objet.
specific-name
Le nom spécifique. Si specific-name est une chaîne vide, la fonction est résolue en fonction intégrée identifiée par function-name.
Si l’erreur concerne une utilisation non valide de UNNEST, le specific-name est *N.

Les causes possibles de cette erreur incluent :

  • Une fonction scalaire ou d’agrégat est référencée là où seule une fonction de table est autorisée (comme dans la clause FROM d’une requête).
  • Une fonction de table est référencée là où seule une fonction scalaire ou d’agrégat est autorisée (comme dans une expression).
  • Une fonction est référencée dans une clause SOURCE d’une instruction CREATE FUNCTION, mais une fonction source ne peut pas être définie sur cette fonction (ou sur cette signature de fonction spécifique).
  • La fonction XMLMODIFY est référencée là où elle n’est pas l’expression la plus élevée à droite de la clause d’affectation SET dans une mise à jour.
  • Une fonction de table générique est référencée, mais une typed-correlation-clause n’est pas spécifiée.
  • Une clause typed-correlation-clause est spécifiée, mais la fonction référencée n’est pas une fonction de table générique.
  • UNNEST a été spécifié dans un contexte non pris en charge.
  • Une fonction définie CORRELATION, COVARIANCE, COVARIANCE_SAMP ou ARRAY_AGG est référencée lorsqu’une clause CUBE, ROLLUP ou GROUPING SETS existe dans la même instruction SQL.
  • ARRAY_AGG ou LISTAGG est référencé dans un fullselect qui inclut une clause ORDER BY ou une clause DISTINCT.

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

Réponse du programmeur :
Pour une fonction, assurez-vous que le nom de fonction et les arguments corrects sont spécifiés et que le chemin SQL inclut le schéma dans lequel la fonction correcte est définie. Vous devrez peut-être modifier le nom de la fonction, les arguments ou le chemin SQL (à l’aide de SET CURRENT PATH ou de l’option de liaison PATH), ou modifier le contexte dans lequel la fonction est utilisée.

SQLSTATE :
42887

CODE RETOUR -374

THE CLAUSE clause HAS NOT BEEN SPECIFIED IN THE CREATE OR ALTER FUNCTION STATEMENT FOR LANGUAGE SQL FUNCTION function-name BUT AN EXAMINATION OF THE FUNCTION BODY REVEALS THAT IT SHOULD BE SPECIFIED

Explication :

Ce message peut être émis si les conditions suivantes s’appliquent :

  • Vous devez spécifier NOT DETERMINISTIC si l’une des conditions suivantes s’applique dans le corps de la fonction :
    • Db2 appelle une fonction dont l’attribut NOT DETERMINISTIC est spécifié.
    • Db2 accède à un registre spécial.
  • Vous devez spécifier MODIFIES SQL DATA si le corps de la fonction définie avec LANGUAGE SQL peut modifier des données SQL ou s’il appelle une fonction ou une procédure pouvant modifier des données SQL.
  • Vous devez spécifier READS SQL DATA si le corps de la fonction définie avec LANGUAGE SQL contient une sous-sélection, ou s’il appelle une fonction qui peut lire des données SQL.
  • Vous devez spécifier EXTERNAL ACTION si le corps de la fonction définie avec LANGUAGE SQL appelle une fonction pour laquelle l’attribut EXTERNAL ACTION est spécifié.

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

Réponse du programmeur :
Spécifiez la clause correcte ou modifiez la fonction du corps.

SQLSTATE :
428C2

CODE RETOUR -373

DEFAULT CANNOT BE SPECIFIED FOR COLUMN OR SQL VARIABLE name

Explication :
La définition ou la modification spécifiée pour la colonne ou la variable SQL incluait la clause DEFAULT. Cependant, DEFAULT n’est pas pris en charge pour le type de données de colonne ou la variable SQL.

name
Le nom de la colonne ou de la variable SQL.

Les raisons possibles de cette erreur incluent les situations suivantes :

  • Une instruction CREATE TABLE ou ALTER TABLE a tenté de définir l’une des colonnes suivantes avec la clause DEFAULT :
  1. Colonne Identité
  2. Colonne ROWID
  3. colonne XML
  4. Colonne d’horodatage du changement de ligne
  5. Colonne Étiquette de sécurité
  6. Colonne de début de ligne
  7. Colonne de fin de ligne
  8. Colonne ID de début de transaction
  9. Colonne d’expression générée
  • La déclaration d’une variable SQL a spécifié la clause DEFAULT et le type de données de la variable SQL est ROWID ou XML.
  • Une instruction SET a spécifié DEFAULT pour la valeur d’une colonne ROWID.

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

Réponse du programmeur :
Supprimez la clause DEFAULT et soumettez à nouveau l’instruction.

SQLSTATE :
42623

CODE RETOUR -372

ONLY ONE ROWID, IDENTITY, ROW CHANGE TIMESTAMP, ROW BEGIN, ROW END, TRANSACTION START ID, SECURITY LABEL, OR DATA CHANGE OPERATION COLUMN IS ALLOWED IN A TABLE

Explication :
Tentative de modification ou de création d’une table pour avoir deux colonnes du même type alors qu’une seule colonne de ce type est autorisée dans une table.

Un tableau ne peut pas avoir deux colonnes ou plus des types suivants :

  • ROWID créé explicitement
  • ROWID implicitement caché
  • Identité
  • ROW CHANGE TIMESTAMP
  • ROW BEGIN
  • ROW END
  • TRANSACTION START ID
  • Étiquette de sécurité
  • DATA CHANGE OPERATION

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

Réponse du programmeur :
Pour une instruction CREATE TABLE, sélectionnez une seule colonne pour avoir l’attribut spécifié.

Pour une instruction ALTER TABLE, une colonne avec l’un des types spécifiés existe déjà pour la table. N’essayez pas d’ajouter une autre colonne avec le même type de données.

SQLSTATE :
428C1

CODE RETOUR -365

USE OF THE VALUE OF EXTENDED INDICATOR VARIABLE IN POSITION value-position IS NOT VALID.

Explication :
La valeur DEFAULT (-5) ou UNASSIGNED (-7) a été utilisée pour la variable d’indicateur étendu dans un contexte où elle n’est pas autorisée. Ces valeurs sont autorisées en tant que variables indicatrices uniquement dans les instructions INSERT, UPDATE et MERGE lorsque la variable hôte fournit la valeur source d’une valeur de colonne.

value-position
Identifie l’emplacement de la valeur de la variable d’indicateur étendu.

Lorsque les variables d’indicateur étendu sont activées :

  • Une expression ne doit pas être plus complexe qu’une référence à une variable hôte unique si l’indicateur est défini sur les valeurs d’indicateur étendu DEFAULT (-5) ou UNASSIGNED (-7), sauf qu’une spécification CAST est autorisée lorsque les conditions suivantes sont rencontré:
    1. La source de la spécification CAST est une variable hôte unique.
    2. Les attributs de données (type de données, longueur, précision et échelle) de la variable hôte sont les mêmes que le résultat de la spécification de transtypage.
  • Les valeurs de variables indicatrices étendues DEFAULT (-5) ou UNASSIGNED (-7) ne doivent pas être utilisées dans :
    1. Une expression qui implique plus qu’une variable hôte ou une variable hôte qui est explicitement transtypée.
    2. Toute expression autre que :
      • La liste d’affectation définie d’une opération UPDATE.
      • La liste des valeurs d’une opération INSERT.
      • Emplacements correspondants de l’expression dans une instruction MERGE.
      • Paramètre source-value d’une instruction MERGE.
      • La liste de sélection d’une instruction INSERT dans la clause FROM de l’instruction SELECT.

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

Réponse du programmeur système :
Remplacez la valeur de la variable d’indicateur étendu par une valeur autorisée pour le contexte dans lequel elle est utilisée

SQLSTATE :
22539

CODE RETOUR -363

THE EXTENDED INDICATOR VARIABLE VALUE FOR PARAMETER position-number IS OUT OF RANGE.

Explication :
La valeur de la variable d’indicateur étendu n’est pas valide.

position-number
La position ordinale du marqueur de paramètre.

Lorsque les variables indicatrices étendues sont activées, toutes les valeurs de variables indicatrices d’entrée négatives doivent être comprises entre -1 et -7 (inclus).

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

Réponse du programmeur système :
Corrigez la valeur et réémettez l’instruction.

SQLSTATE :
22010

CODE RETOUR -359

THE RANGE OF VALUES FOR THE IDENTITY COLUMN OR SEQUENCE IS EXHAUSTED

Explication :
Db2 a tenté de générer une valeur pour une colonne d’identité ou un objet de séquence. Cependant, toutes les valeurs autorisées ont déjà été attribuées.

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

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

  • Pour une colonne d’identité, redéfinissez la table avec une plage de valeurs plus large pour la colonne d’identité. Si une spécification MAXVALUE ou MINVALUE a été définie pour limiter la plage de valeurs à une plage inférieure à la plage du type de données de la colonne, la colonne peut être modifiée pour étendre la plage de valeurs valides. Sinon, la colonne d’identité doit être recréée, ce qui nécessite que la table soit recréée. Tout d’abord, supprimez la table existante ; Ensuite, recréez la table avec un type de données différent pour la colonne d’identité, en spécifiant un type de données qui a une plage de valeurs plus large que le type de données actuel pour la colonne d’identité.
  • Pour un objet séquence, redéfinissez la séquence avec une plage de valeurs plus large. Si une spécification MAXVALUE ou MINVALUE a été créée pour limiter la plage de valeurs à une plage inférieure à la plage du type de données, la séquence peut être modifiée pour étendre la plage de valeurs valides. Sinon, la séquence doit être recréée à l’aide de DROP SEQUENCE et CREATE SEQUENCE pour couvrir une plus grande plage de valeurs.

SQLSTATE :
23522

CODE RETOUR -356

COLUMN OR KEY EXPRESSION expression-number IS NOT VALID, REASON CODE = reason-code

Explication :
L’instruction CREATE INDEX ne peut pas être traitée car une colonne ou une expression clé n’est pas valide.

expression-number
Le numéro de la colonne ou de l’expression clé non valide.
reason-code
Une valeur numérique qui indique la raison de l’échec.

1

Contient une sous-requête.

2

Ne contient pas au moins une référence à une colonne.

3

Référence un registre spécial.

4

Inclut une expression CASE.

5

Comprend une fonction définie par l’utilisateur.

6

Apparaît plus d’une fois dans l’index.

7

Fait référence à un nom de colonne qualifié.

8

Fait référence à une colonne définie avec un FIELDPROC.

9

Fait référence à la fonction LOWER ou UPPER sans nom de paramètre régional ou l’expression de chaîne d’entrée est FOR BIT DATA.

10

Fait référence à la fonction TRANSLATE sans table de traduction de sortie.

11

Le schéma de codage du résultat d’une colonne ou d’une expression clé est différent du schéma de codage CCSID de la table.

12

La fonction intégrée SUBSTR est autorisée à référencer la partie en ligne d’une colonne LOB dans le contexte spécifié. De plus, les arguments START et LENGTH de la fonction SUBSTR doivent être des constantes.

13

Fait référence à l’une des fonctions intégrées suivantes :

  • VERIFY_GROUP_FOR_USER
  • VERIFY_TRUSTED_CONTEXT_ROLE_FOR_USER
  • VERIFY_ROLE_FOR_USER.

14

Contient une expression qui requiert l’utilisation d’une valeur de fuseau horaire implicite. Par exemple, l’expression clé peut inclure un transtypage explicite d’une valeur TIMESTAMP WITHOUT TIME ZONE en une valeur TIMESTAMP WITH TIME ZONE.

15

Référence une variable globale.

25

Une spécification pour un index sur une table EBCDIC comprend une colonne Db2 11 Unicode et une colonne Db2 12 Unicode.

116

Lors d’un appel de la fonction intégrée JSON_VAL dans une key-expression pour un index, le troisième argument de la fonction doit se terminer par « :na », pour indiquer que le premier argument ne contient pas de tableau JSON.

117

Dans un appel de la fonction intégrée JSON_VAL dans une key-expression pour un index, si le premier argument de la fonction est une colonne, cette colonne doit être contenue dans une table dans un espace table partition par croissance.

118

S’il y a un appel de la fonction intégrée JSON_VAL dans une key-expression pour un index, l’instruction CREATE INDEX ne doit pas référencer une colonne LOB autre que la colonne LOB qui est l’argument de la fonction JSON_VAL. Une telle instruction CREATE INDEX ne peut faire référence qu’à une seule colonne LOB.

119

Si une key-expression pour un index contient un appel de la fonction JSON_VAL, l’appel doit être l’expression la plus externe pour key-expression.

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

Réponse du programmeur :
Corrigez l’erreur dans l’expression clé et relancez l’instruction.

SQLSTATE :
429BX