Tous les articles par Mr COBOL

CODE RETOUR -513

INVALID USE OF alias-name

Explication
L’objet indiqué par alias-name peut être le nom d’un alias en cours de création ou le nom d’un alias utilisé dans un contexte invalide. Un alias ne peut pas être défini sur un autre alias sur le même serveur.

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

Réponse du programmeur
Modifiez l’instruction SQL pour faire référence au nom d’un objet d’un type pris en charge.

SQLSTATE
42924

CODE RETOUR -512

STATEMENT REFERENCE TO REMOTE OBJECT IS INVALID

Explication
L’une des conditions suivantes existe :

  • La déclaration fait référence à plusieurs emplacements.
  • Une instruction avec une référence distante est EXPLAINÉE (EXPLAINED) soit par une instruction EXPLAIN dynamique, soit par l’option EXPLAIN(YES).
  • Un alias est mal utilisé.
  • Un nom en trois parties est implicitement ou explicitement utilisé dans une instruction qui n’est pas prise en charge par les protocoles privés Db2.
  • Un nom en trois parties est implicitement ou explicitement utilisé dans une instruction déclenchée.
  • Une instruction PREPARE contient une clause ATTRIBUTES. Ceci n’est pas pris en charge par les protocoles privés Db2.
  • Un nom en trois parties avec une référence distante n’est pas autorisé dans le corps d’une fonction SQL.
  • Un nom en trois parties avec une référence distante est spécifié dans une instruction TRANSFER OWNERSHIP.

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

Réponse du programmeur
Si l’objet ne peut pas être éliminé de manière significative de l’instruction, consultez votre administrateur de base de données pour d’autres moyens d’obtenir les données requises.

Si la référence d’objet distant se trouve dans une instruction SQL déclenchée, vous pouvez à la place appeler une fonction définie par l’utilisateur ou une procédure stockée à partir du déclencheur et accéder à l’objet distant à partir de la fonction ou de la procédure stockée.

SQLSTATE
56023

CODE RETOUR -500

THE IDENTIFIED CURSOR WAS CLOSED WHEN THE CONNECTION WAS DESTROYED

Explication
L’instruction FETCH, UPDATE, DELETE ou CLOSE identifie un curseur fermé qui a été défini avec l’option WITH HOLD. Le curseur a été fermé lorsque la connexion dont il dépendait a été détruite lors d’une opération de validation. La connexion a été détruite car le processus d’application l’a placée dans l’état libéré ou le plan d’application était lié à l’option DISCONNECT(AUTOMATIC).

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

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

  • Si vous souhaitez que le curseur soit fermé, modifiez le programme d’application afin que le curseur ne soit pas référencé à l’état fermé.
  • Si vous voulez que le curseur soit ouvert et que la connexion ait été placée dans l’état validé par le programme d’application, modifiez le programme de sorte que la connexion ne soit pas placée dans l’état validé tant que le curseur n’est pas explicitement fermé.
  • Si vous voulez que le curseur soit ouvert et que la connexion a été placée dans l’état libéré suite à l’option DISCONNECT(AUTOMATIC), relisez le plan à l’aide de DISCONNECT(CONDITIONAL).

Corrigez l’erreur dans l’application, relisez le plan et soumettez à nouveau le travail.

SQLSTATE
24501

CODE RETOUR -499

CURSOR cursor-name HAS ALREADY BEEN ASSIGNED TO THIS OR ANOTHER RESULT SET FROM PROCEDURE procedure-name.

Explication
Une tentative a été faite pour affecter un curseur à un jeu de résultats à l’aide de l’instruction SQL ALLOCATE CURSOR et l’un des cas suivants s’applique :

  • La variable de localisation de l’ensemble de résultats spécifiée dans l’instruction ALLOCATE CURSOR a été précédemment affectée au curseur cursor-name.
  • Le curseur cursor-name spécifié dans l’instruction ALLOCATE CURSOR a été précédemment affecté à un jeu de résultats à partir de la procédure stockée procedure-name.

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

Réponse du programmeur
Déterminez si l’ensemble de résultats cible nommé dans l’instruction ALLOCATE CURSOR a déjà été affecté à un curseur.

Si le jeu de résultats a été précédemment affecté au curseur cursor-name , choisissez un autre jeu de résultats cible ou appelez à nouveau la procédure stockée procedure-name et réexécutez les instructions ASSOCIATE LOCATOR et ALLOCATE CURSOR.

Si le jeu de résultats n’a pas été précédemment affecté à un curseur, le curseur cursor-name spécifié dans l’instruction ALLOCATE CURSOR a été précédemment affecté à un jeu de résultats à partir de la procédure stockée procedure-name. Vous ne pouvez pas affecter le curseur cursor-name à un autre jeu de résultats, vous devez donc spécifier un nom de curseur différent dans l’instruction ALLOCATE CURSOR.

Corrigez les instructions de sorte que la syntaxe exacte utilisée pour spécifier le nom de la procédure sur l’instruction CALL soit la même que celle sur ASSOCIATE LOCATOR et/ou DESCRIBE PROCEDURE. Si un nom non qualifié est utilisé pour CALL la procédure, le nom en une partie doit également être utilisé sur les autres instructions. Si l’instruction CALL est faite avec un nom en trois parties et que le serveur actuel est le même que l’emplacement dans le nom en trois parties, la procédure ASSOCIATE LOCATOR ou DESCRIBE peut omettre l’emplacement.

SQLSTATE
24516

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