Archives de catégorie : SQLCODE

CODE RETOUR -497

THE MAXIMUM LIMIT OF INTERNAL IDENTIFIERS HAS BEEN EXCEEDED FOR DATABASE database-name

Explication
L’instruction SQL ne peut pas être exécutée car une limite d’identifiant interne a été dépassée pour la base de données. La cause de cette erreur est due à l’un des éléments suivants :

  • Dans une instruction CREATE DATABASE, la limite de 65217 DBID a été dépassée.
  • Pour toutes les autres instructions, la limite de 32767 OBID a été dépassée pour cette base de données.
  • Si la base de données est une base de données WORKFILE, l’une des raisons suivantes peut s’appliquer :
    1. Le nombre d’espaces de table dans la base de données WORKFILE a dépassé la limite de 500.
    2. Le nombre d’index définis sur les tables temporaires globales déclarées appartenant à tous les agents sur le membre Db2 local a dépassé la limite de 10 000.
    3. Le nombre de tables et de déclencheurs appartenant à un agent local a dépassé la limite de 11 767. Les tables de la base de données WORKFILE incluent les fichiers de travail, les tables temporaires globales créées et les tables temporaires globales déclarées.

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

Réponse du programmeur
Prenez les mesures appropriées décrites dans les cas suivants :

  1. En cas de dépassement d’une limite DBID, SUPPRIMER toutes les bases de données inutilisées et émettre un COMMIT.
  2. En cas de dépassement d’une limite OBID, effectuez l’une des actions suivantes :
    • Spécifiez une base de données différente.
    • Supprimez tous les espaces table ou index inutilisés de la base de données et lancez un COMMIT.
    • Si la base de données contient des espaces table multi-tables qui contiennent un mélange de tables utilisées et inutilisées, supprimez toutes les tables inutilisées et émettez un COMMIT. Exécutez l’utilitaire REORG sur chaque espace table affecté, puis exécutez l’utilitaire MODIFY RECOVERY pour récupérer les OBID de table supprimés. Pour plus d’informations, voir Récupérer de l’espace dans le DBD.

SQLSTATE
54041

CODE RETOUR -496

THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE IT REFERENCES A RESULT SET THAT WAS NOT CREATED BY THE CURRENT SERVER

Explication
L’instruction SQL ne peut pas être exécutée car le serveur actuel est différent du serveur qui a appelé une procédure stockée. L’instruction SQL peut être l’une des suivantes :

  • ALLOCATE CURSOR
  • DESCRIBE CURSOR
  • FETCH (à l’aide d’un curseur alloué)
  • CLOSE (à l’aide d’un curseur alloué)

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

Réponse du programmeur
Connectez-vous au serveur qui a appelé la procédure stockée qui a créé le jeu de résultats avant d’exécuter l’instruction SQL qui a échoué.

SQLSTATE
51033

CODE RETOUR -495

ESTIMATED PROCESSOR COST OF estimate-amount1 PROCESSOR SECONDS (estimate-amount2 SERVICE UNITS) IN COST CATEGORY cost-category EXCEEDS A RESOURCE LIMIT ERROR THRESHOLD OF limit- amount SERVICE UNITS

Explication
La préparation d’une instruction SQL INSERT, UPDATE, MERGE, DELETE ou SELECT dynamique a entraîné une estimation des coûts dépassant la valeur de seuil d’erreur spécifiée dans la table de spécification de limite de ressources (RLST). Cette erreur est également émise si la valeur de catégorie de coût Db2 était B et que l’action par défaut spécifiée dans la colonne RLF_CATEGORY_B du RLST consiste à générer une erreur.

estimate_amount1
L’estimation du coût (en secondes processeur) si l’instruction INSERT, UPDATE, MERGE, DELETE ou SELECT préparée devait être exécutée.
estimate_amount2
L’estimation des coûts (en unités de service) si l’instruction préparée INSERT, UPDATE, MERGE, DELETE ou SELECT devait être exécutée.
cost-category
La catégorie de coût Db2 pour cette instruction SQL. Les valeurs possibles sont A ou B.
limit-amount
Le seuil d’erreur (en unités de service) spécifié dans la colonne RLFASUERR du RLST. Si vous avez entré un nombre négatif pour la colonne RLFASUERR, la valeur du montant limite est par défaut zéro.

Action du système
La préparation de l’instruction dynamique INSERT, UPDATE, MERGE, DELETE ou SELECT a échoué.

Réponse de l’utilisateur
Si l’avertissement est provoqué par une instruction SQL qui consomme trop de ressources processeur, essayez de réécrire l’instruction pour qu’elle fonctionne plus efficacement. Une autre option consiste à demander à l’administrateur d’augmenter la valeur du seuil d’erreur dans le RLST.

Réponse du programmeur
Si ce SQLCODE a été renvoyé parce que la valeur de catégorie de coût est B, il se peut que l’instruction utilise des marqueurs de paramètres ou que certaines statistiques ne soient pas disponibles pour les tables et colonnes référencées. Assurez-vous que l’administrateur a exécuté l’utilitaire RUNSTATS sur les tables référencées. Il se peut également que les UDF soient invoquées lors de l’exécution de l’instruction, ou pour les instructions INSERT, UPDATE, MERGE ou DELETE que les déclencheurs sont définis sur la table modifiée. Vérifiez le DSN_STATEMNT_TABLE ou l’enregistrement IFCID 22 de cette instruction pour trouver les raisons pour lesquelles cette instruction SQL a été placée dans la catégorie de coût B. Si le programme ne peut pas être modifié, ou si les statistiques ne peuvent pas être obtenues, demandez à l’administrateur de modifier la valeur dans le RLF_CATEGORY_B colonne dans le RLST à Y qui permet à l’instruction de s’exécuter ou W qui renvoie un avertissement au lieu d’une erreur.

SQLSTATE
57051

CODE RETOUR -492

THE CREATE FUNCTION FOR function-name HAS A PROBLEM WITH PARAMETER NUMBER number. IT MAY INVOLVE A MISMATCH WITH A SOURCE FUNCTION

Explication
Le paramètre à la position numéro de la fonction function-name est erroné.

function-name 
Le nom de la fonction qui ne peut pas être créée.
number
Le numéro de position du paramètre de fonction qui pose problème.

Cette erreur est émise dans les circonstances suivantes :

  • Le paramètre de la fonction source ne peut pas être converti en paramètre correspondant de la fonction en cours de création.
  • Si le paramètre de la fonction en cours de création est un paramètre de table, le paramètre correspondant de la fonction source doit également être un paramètre de table. De plus, les numéros de colonne pour les deux paramètres de la table doivent être les mêmes.

Si le paramètre de la fonction en cours de création n’est pas un paramètre de table, le paramètre correspondant de la fonction source ne doit pas non plus être un paramètre de table.

  • Le paramètre de la fonction en cours de création est un tableau. Une fonction sourcée ne peut pas être définie avec un paramètre de tableau.

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

Réponse du programmeur
Les corrections possibles incluent :

  • Identifiez une fonction source différente.
  • Modifiez le type de données du paramètre de la fonction en cours de création afin que le type de données de la fonction source puisse être converti en ce type de données.
  • Ne créez pas de fonction sourcée à partir d’une fonction source avec des paramètres de tableau.

SQLSTATE
42879

CODE RETOUR -491

CREATE STATEMENT FOR USER-DEFINED FUNCTION function-name MUST HAVE A RETURNS CLAUSE AND: THE EXTERNAL CLAUSE WITH OTHER REQUIRED KEYWORDS; THE PARAMETER NAMES; OR THE SOURCE CLAUSE

Explication
Une clause obligatoire est manquante dans CREATE pour la fonction spécifiée.

function-name
Le nom de la fonction.

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

Réponse du programmeur
Ajoutez les clauses manquantes et réémettez l’instruction défaillante.

Pour une fonction externe (EXTERNAL) , spécifiez EXTERNAL et l’une des options suivantes :

  • LANGUAGE
  • PARAMETER STYLE

Pour une fonction SOURCE FUNCTION définie par l’utilisateur, spécifiez la clause SOURCE.

SQLSTATE
42601

CODE RETOUR -490

NUMBER number DIRECTLY SPECIFIED IN AN SQL STATEMENT IS OUTSIDE THE RANGE OF ALLOWABLE VALUES IN THIS CONTEXT (minvalmaxval)

Explication
Un nombre ( number  ) a été spécifié qui n’est pas valide dans le contexte dans lequel il a été spécifié. La valeur minimale autorisée dans ce contexte est minval . La valeur maximale autorisée dans ce contexte est maxval. n doit être compris dans la plage spécifiée par minval et maxval ( minval =< n =< maxval ).

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

Réponse du programmeur
Remplacez la valeur n par une valeur valide dans l’instruction.

SQLSTATE
428B7

CODE RETOUR -487

object-type object-name ATTEMPTED TO EXECUTE AN SQL STATEMENT WHEN THE DEFINITION OF THE FUNCTION OR PROCEDURE DID NOT SPECIFY THIS ACTION

Explication
Une fonction définie par l’utilisateur ou un object-name  de procédure stockée a été invoquée et a tenté d’exécuter des instructions SQL, mais la fonction ou la procédure a été créée avec l’option NO SQL.

Dans un environnement de fonctions et de procédures imbriquées, l’option SQL en vigueur est la plus restrictive qui a été spécifiée dans la hiérarchie imbriquée de fonctions et de procédures. L’option d’accès aux données SQL en vigueur ne permet pas de modifier les données.

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

Réponse du programmeur
Utilisez une instruction ALTER pour modifier la définition de la fonction ou de la procédure afin d’autoriser les instructions SQL, ou supprimez l’instruction SQL défaillante de la fonction ou de la procédure externe.

SQLSTATE
38001

CODE RETOUR -483

IN CREATE FUNCTION FOR function-name STATEMENT, THE NUMBER OF PARAMETERS DOES NOT MATCH THE NUMBER OF PARAMETERS OF THE SOURCE FUNCTION

Explication
Une tentative est en cours pour CRÉER une fonction function-name défini par l’utilisateur qui provient d’une autre fonction. Une des situations suivantes a été identifiée :

  • La clause SOURCE utilise un nom de fonction (liste de paramètres d’entrée) pour identifier la fonction source, et le nombre de types dans la liste est différent du nombre de paramètres de la fonction en cours de création.
  • La clause SOURCE utilise une syntaxe différente pour identifier la fonction source, et le nombre de types de cette fonction est différent du nombre de paramètres de la fonction en cours de création.

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

Réponse du programmeur
Le nombre de paramètres pour la fonction SOURCE et pour la fonction en cours de création doit être le même. L’identification de la fonction SOURCE doit être modifiée en :

  • corriger la liste des paramètres d’entrée
  • corrigez le nom de la fonction ou le nom spécifique de la fonction pour identifier la fonction appropriée.

Il est également possible que le chemin SQL doive être corrigé pour que la résolution de fonction correcte se produise.

SQLSTATE
42885

CODE RETOUR -482

THE PROCEDURE procedure-name RETURNED NO LOCATORS

Explication
La procédure identifiée dans une instruction ASSOCIATE LOCATORS n’a renvoyé aucun localisateur d’ensemble de résultats.

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

Réponse du programmeur
Déterminez si les localisateurs de jeu de résultats sont renvoyés à partir de la procédure identifiée à l’aide de l’instruction DESCRIBE PROCEDURE.

SQLSTATE
51030

CODE RETOUR -481

THE GROUP BY CLAUSE CONTAINS element-1 NESTED WITHIN element-2

Explication
Les types d’imbrication suivants ne sont pas autorisés dans une clause GROUP BY :

  • CUBE dans CUBE, ROLLUP ou grouping-expression-list
  • ROLLUP dans CUBE, ROLLUP ou grouping-expression-list
  • () – parfois appelé un grand-total – dans CUBE, ROLLUP ou grouping-expression-list
  • GROUPING SETS dans GROUPING SETS, CUBE, ROLLUP ou grouping-expression-list
  • CUBE, ROLLUP, () – parfois appelé un grand total, GROUPING SETS dans n’importe quelle fonction, expression CASE ou spécification CAST

Dans certains cas, la valeur *N sera fournie pour l’élément-2. Dans ce cas, *N représente CUBE, ROLLUP, GROUPING SETS ou grouping-expression-list.

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

Réponse du programmeur
Modifiez la clause GROUP BY pour supprimer l’imbrication identifiée par element-1 .

SQLSTATE
428B0