Archives de catégorie : SQLCODE

CODE RETOUR -426

DYNAMIC COMMIT NOT VALID AT AN APPLICATION SERVER WHERE UPDATES ARE NOT ALLOWED

Explication
Une application s’exécutant à l’aide des protocoles DRDA a tenté d’émettre une instruction COMMIT dynamique ou une procédure stockée a tenté d’émettre un COMMIT_ON_RETURN, alors qu’elle était connectée à un emplacement auquel les mises à jour ne sont pas autorisées. Un COMMIT ou COMMIT_ON_RETURN dynamique ne peut être émis que lorsque vous êtes connecté à un emplacement auquel les mises à jour sont autorisées.

Action du système
L’instruction ne peut pas être traitée. Aucun COMMIT n’est effectué.

Réponse du programmeur
Les protocoles IMS ou CICS® doivent être utilisés pour valider le travail dans ces environnements.

SQLSTATE
2D528

CODE RETOUR -423

INVALID VALUE FOR LOCATOR IN POSITION position-#

Explication
La valeur spécifiée dans une variable hôte de localisateur d’ensemble de résultats, une variable hôte de localisateur LOB ou un localisateur de table spécifié à la position position-# dans la liste des variables de localisateur de l’instruction SQL n’identifie pas un localisateur d’ensemble de résultats valide, une variable de localisateur LOB , ou localisateur de table, respectivement.

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

Réponse du programmeur
Pour un localisateur d’ensemble de résultats, il existe deux causes courantes d’erreur :

  • La variable hôte utilisée comme localisateur d’ensemble de résultats n’a jamais reçu de valeur de localisateur d’ensemble de résultats valide. Les valeurs de localisateur d’ensemble de résultats sont renvoyées par les instructions DESCRIBE PROCEDURE et ASSOCIATE LOCATORS. Assurez-vous que la valeur de votre variable hôte est obtenue à partir de l’une de ces instructions.
  • Les valeurs de localisateur de jeu de résultats ne sont valides que tant que le curseur SQL sous-jacent est ouvert. Si une opération de validation ou d’annulation ferme un curseur SQL, le localisateur de jeu de résultats associé au curseur n’est plus valide.

Pour un localisateur LOB, certaines causes courantes d’erreur sont :

  • La variable hôte utilisée comme localisateur LOB n’a jamais reçu de valeur LOB valide.
  • Une opération de validation ou d’annulation ou une instruction SQL FREE LOCATOR a libéré le localisateur.

Pour un localisateur de table, l’erreur se produit généralement lorsque la variable hôte qui a été utilisée comme localisateur de table n’a jamais reçu de valeur de localisateur de table valide.

SQLSTATE
0F001

CODE RETOUR -420

THE VALUE OF A STRING ARGUMENT WAS NOT ACCEPTABLE TO THE function-name FUNCTION

Explication
Un argument de chaîne n’était pas conforme aux exigences de la fonction. Par exemple, une chaîne de caractères passée à la fonction DECIMAL n’était pas conforme aux règles de formation d’un entier ou d’une constante décimale SQL.

Si l’erreur est émise pour un cast implicite ou explicite, le function-name contient le nom du type de données cible du cast. Pour un transtypage implicite où une valeur de chaîne de caractères ou de chaîne graphique est comparée à une valeur numérique, Db2 convertit implicitement la valeur de chaîne en DECFLOAT(34) afin que la fonction function-name ait une valeur DECFLOAT.

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

Réponse du programmeur
Modifiez la valeur de l’argument afin qu’elle soit conforme aux exigences de la fonction.

SQLSTATE
22018

CODE RETOUR -413

OVERFLOW OR UNDERFLOW OCCURRED DURING NUMERIC DATA TYPE CONVERSION

Explication
Lors du traitement de l’instruction SQL, une condition de dépassement ou de souspassement s’est produite lors de la conversion d’un type numérique à un autre. La conversion numérique est effectuée selon les règles standard de SQL.

Action du système
L’instruction ne peut pas être traitée. Aucune donnée n’a été récupérée, mise à jour ou supprimée.

Réponse du programmeur
Examinez la syntaxe de l’instruction SQL pour déterminer la cause de l’erreur. Si le problème dépend des données, il peut être nécessaire d’examiner les données traitées au moment de l’erreur.

SQLSTATE
22003

CODE RETOUR -409

INVALID OPERAND OF A COUNT FUNCTION

Explication
L’opérande de la fonction COUNT ou COUNT_BIG dans l’instruction viole la syntaxe SQL. Une erreur courante est un nom de colonne ou une autre expression sans DISTINCT.

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

Réponse du programmeur
Corrigez la syntaxe et soumettez à nouveau l’instruction.

SQLSTATE
42607

CODE RETOUR -400

THE CATALOG HAS THE MAXIMUM NUMBER OF USER DEFINED INDEXES

Explication :
Pas plus de 500 index définis par l’utilisateur peuvent être créés dans la base de données du catalogue.

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

Réponse du programmeur :
Si cet index doit être créé, un autre index défini par l’utilisateur sur le catalogue doit être supprimé. Une fois cet index supprimé, cette instruction peut être exécutée.

SQLSTATE :
54027

CODE RETOUR -399

INVALID VALUE ROWID WAS SPECIFIED

Explication :
Lors de l’insertion dans une table, une valeur spécifiée pour une colonne ROWID n’était pas valide. Seules les valeurs d’ID de ligne précédemment générées par Db2 sont valides.

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

Réponse du programmeur système :
N’essayez pas de générer une valeur dans une colonne ROWID. L’insertion dans les colonnes ROWID est prise en charge à des fins de propagation des données, où Db2 a précédemment généré les valeurs d’ID de ligne. Seules les valeurs d’ID de ligne précédemment générées par Db2 peuvent être utilisées comme valeurs à insérer dans une colonne d’ID de ligne. Vous pouvez également insérer la ligne spécifiant DEFAULT pour la colonne ROWID ou supprimer la colonne ROWID de la liste de colonnes d’insertion.

Vous pouvez également utiliser la clause OVERRIDING comme solution possible à cette situation. Pour plus d’informations sur la clause OVERRIDING USER VALUE, consultez INSERT.

SQLSTATE :
22511

CODE RETOUR -398

A LOCATOR WAS REQUESTED FOR HOST VARIABLE NUMBER position-number BUT THE VARIABLE IS NOT A LOB

Explication :
L’application a demandé qu’un localisateur soit renvoyé à partir de la variable hôte position-number. Un localisateur ne peut être utilisé qu’avec des données LOB, et les données demandées ne sont pas un LOB.

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

Réponse du programmeur :
Modifiez l’instruction pour qu’elle renvoie des données LOB ou modifiez la variable hôte cible pour qu’elle ne soit pas un localisateur.

SQLSTATE :
428D2

CODE RETOUR -397

GENERATED IS SPECIFIED AS PART OF A COLUMN DEFINITION, BUT IT IS NOT VALID FOR THE DEFINITION OF THE COLUMN

Explication :
Dans une instruction CREATE TABLE ou ALTER TABLE, GENERATED a été spécifié pour un type de colonne qui ne prend pas en charge les valeurs générées. GENERATED ne peut être spécifié que pour une colonne avec l’un des types de données suivants :

  • ID de ligne
  • Type distinct basé sur un ID de ligne
  • Horodatage du changement de ligne
  • Colonne Identité
  • Colonne de début de ligne
  • Colonne de fin de ligne
  • Colonne ID de début de transaction
  • Colonne d’expression générée

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

Réponse du programmeur :
Corrigez l’énoncé. Supprimez la clause GENERATED ou remplacez la définition de la colonne par l’un des types pouvant être générés.

SQLSTATE :
428D3

CODE RETOUR -396

object-type object-name ATTEMPTED TO EXECUTE AN SQL STATEMENT DURING FINAL CALL PROCESSING

Explication :
Une fonction définie par l’utilisateur nommée object-name a été invoquée et a tenté d’exécuter une instruction SQL (autre que CLOSE CURSOR) pendant le traitement de l’appel final, mais l’instruction n’est pas autorisée.

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

Réponse du programmeur :
Modifiez la définition de la fonction pour ne pas émettre d’instructions SQL lors du traitement de l’appel final.

SQLSTATE :
38505