Tous les articles par Mr COBOL

CODE RETOUR -526

THE REQUESTED OPERATION OR USAGE DOES NOT APPLY TO table-type TEMPORARY TABLE table-name

Explication
DB2 suppose que l’instruction SQL en cours d’exécution fait référence à une table temporaire créée ou déclarée, nommée  table-name , et que l’opération ou l’utilisation demandée dans l’instruction n’est pas autorisée sur la table temporaire.

table-type
CREATED ou DECLARED
CREATED est pour une table temporaire définie par l’instruction CREATE GLOBAL TEMPORARY TABLE.

DECLARED concerne une table temporaire définie par l’instruction DECLARE GLOBAL TEMPORARY TABLE.

table-name
Nom qualifié de la table temporaire.

Cette erreur peut être émise pour les raisons suivantes lorsque le table-type est CREATED :

  • Si l’instruction SQL est une instruction DELETE qui spécifie la clause d’extraction, supprimez la clause d’extraction de l’instruction DELETE.
  • Une clause KEY LABEL est spécifiée.

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

Réponse du programmeur
Modifiez l’instruction SQL pour vous assurer que les références d’objet ne sont pas au type de table temporaire indiqué

Si le table-type est DÉCLARÉ et que vous souhaitiez que table-name fasse référence à une table de base persistante existante, vous devez effectuer l’une des actions suivantes :

  • Recréez la table de base persistante table-name avec un autre qualificateur de schéma
  • Dans le même processus d’application, émettez un DROP TABLE pour le nom de la table table-name suivi d’un COMMIT pour supprimer la table temporaire déclarée et pouvoir ensuite référencer la table de base persistante avec le même table-name dans le même processus d’application
  • Supprimez l’instruction DECLARE GLOBAL TEMPORARY TABLE du processus d’application pour utiliser la table de base persistante avec le même nom de table

Si table-type est CREATED, effectuez l’action suivante et relancez l’instruction :

  • Si l’instruction SQL est une instruction DELETE qui spécifie la clause d’extraction, supprimez la clause d’extraction de l’instruction DELETE.
  • Si l’instruction SQL contient une clause KEY LABEL, supprimez la spécification d’étiquette de clé.

SQLSTATE
42995

CODE RETOUR -525

THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE IT WAS IN ERROR AT BIND TIME FOR SECTION = sectno PACKAGE = pkgname CONSISTENCY TOKEN = contoken

Explication
L’un des éléments suivants :

  • L’instruction était erronée lorsque le package a été lié, mais l’erreur a ensuite été ignorée car l’option SQLERROR (CONTINUE) a été utilisée. Comme l’instruction contient une erreur, elle ne peut pas être exécutée.
  • L’instruction peut ne pas être une instruction exécutable à cet emplacement, ou peut n’être exécutable que par un demandeur d’application Db2 (par exemple, DECLARE TABLE dans une application s’exécutant sur OS/2 provoque ce message).

Les variables sont :
sectno
Numéro de section
pkgname
locid.collid.pkgid
contoken
Jeton de cohérence en hexadécimal

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

Réponse du programmeur
Si l’instruction SQL n’est pas censée s’exécuter à l’emplacement indiqué, corrigez le programme afin que l’instruction erronée ne s’exécute pas à cet emplacement. Précompiler, compiler et lier remplacent le package. Si l’instruction SQL est censée s’exécuter à l’emplacement indiqué, corrigez le problème détecté lors de la liaison et liez le package à l’aide de BIND avec ACTION(REPLACE). Si plusieurs versions du package ont été liées, émettez l’instruction SELECT suivante pour déterminer quelle version a l’erreur : SELECT VERSION FROM locid.SYSIBM.SYSPACKAGE WHERE LOCATION = ‘ ‘ AND COLLID = ‘collid’ AND NAME = ‘pkgid’ AND HEX (CONTOKEN) = ‘contoken’

Où:
locid
Nom de la localisation
collid
Identifiant de la collection
pkgid
Nom du programme

SQLSTATE
51015

CODE RETOUR -519

THE PREPARE STATEMENT IDENTIFIES THE SELECT STATEMENT OF THE OPENED CURSOR cursor-name

Explication
Le programme d’application a tenté de PREPARE (en fait, de re-PREPARE) l’instruction SELECT pour le curseur spécifié à un moment où ce curseur était déjà ouvert.

Action du système
L’instruction ne peut pas être traitée. Le curseur n’a pas été affecté.

Réponse du programmeur
Corrigez la logique du programme d’application afin qu’il ne tente pas de re-PREPARE l’instruction SELECT pour un curseur lorsque ce curseur est ouvert.

SQLSTATE
24506

CODE RETOUR -518

THE EXECUTE STATEMENT DOES NOT IDENTIFY A VALID PREPARED STATEMENT

Explication
L’une des conditions suivantes existe :

  • L’instruction identifiée dans l’instruction EXECUTE n’a pas été préparée.
  • L’instruction identifiée dans l’instruction EXECUTE identifie une instruction SELECT ou ASSOCIATE LOCATORS
  • L’instruction identifiée dans l’instruction EXECUTE IMMEDIATE identifie une instruction SELECT ou ASSOCIATE LOCATORS.
  • L’instruction identifiée dans l’instruction EXECUTE est une instruction de définition de données écrite en langage SQL natif et cette instruction a déjà été exécutée.
  • Une instruction COMMIT ou ROLLBACK a été émise. L’opération COMMIT ou ROLLBACK a détruit la version préparée de l’instruction.

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

Réponse du programmeur
Assurez-vous de préparer la déclaration avant d’EXÉCUTER. Assurez-vous également que l’instruction préparée n’est pas :

  • Une instruction SELECT.
  • Une instruction ASSOCIATE LOCATORS.

Si l’instruction est une instruction de définition de données écrite en langage SQL natif et que cette instruction a déjà été exécutée, vous devez la préparer à nouveau avant de pouvoir l’exécuter à nouveau.

Si l’instruction préparée est émise après une instruction COMMIT ou ROLLBACK, effectuez l’une des actions suivantes :

  • Préparez à nouveau la déclaration.
  • Liez le package d’application avec l’option KEEPDYNAMIC(YES) pour conserver l’instruction préparée après une instruction COMMIT ou ROLLBACK.
  • Liez le package d’application avec RELEASE(DEALLOCATE) pour conserver une instruction préparée qui référence les tables temporaires déclarées après une instruction COMMIT.

SQLSTATE
07003

CODE RETOUR -517

CURSOR cursor-name CANNOT BE USED BECAUSE ITS STATEMENT NAME DOES NOT IDENTIFY A PREPARED SELECT STATEMENT

Explication
Le curseur ‘cursor-name‘ n’a pas pu être utilisé comme spécifié car l’instruction préparée nommée dans la déclaration du curseur n’était pas une instruction SELECT.

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

Réponse du programmeur
Vérifiez que le nom-instruction est correctement spécifié dans l’instruction PREPARE et l’instruction DECLARE CURSOR pour le curseur ‘cursor-name‘. Vous pouvez également corriger la logique du programme d’application pour vous assurer que seules les instructions SELECT préparées sont utilisées en association avec les déclarations de curseur.

SQLSTATE
07005

CODE RETOUR -516

THE DESCRIBE STATEMENT DOES NOT SPECIFY A PREPARED STATEMENT

Explication
Une tentative a été faite pour exécuter une instruction DESCRIBE qui ne faisait pas référence à une instruction qui avait été préparée avec succès sur le serveur actuel.

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

Réponse du programmeur
Vérifiez que le nom de l’instruction spécifié dans l’instruction DESCRIBE est une instruction qui a été préparée sur le serveur actuel.

SQLSTATE
26501

CODE RETOUR -514

THE CURSOR cursor-name IS NOT IN A PREPARED STATE

Explication
Le programme d’application a essayé d’utiliser un curseur, ‘cursor-name‘, qui n’est pas dans un état préparé. Le curseur est associé à une instruction qui :

  1. N’a jamais été préparé.
  2. A été invalidé par une opération de validation ou d’annulation

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

Réponse du programmeur
Pour le cas 1, assurez-vous de préparer l’instruction nommée dans l’instruction DECLARE CURSOR pour ‘cursor-name‘ avant d’essayer d’ouvrir le curseur.

Pour le cas 2, effectuez l’une des actions suivantes :

  • Utilisez l’option WITH HOLD de DECLARE CURSOR.
  • N’exécutez pas d’opération de validation ou d’annulation tant que vous n’avez pas fini d’utiliser le curseur.
  • Préparez à nouveau l’instruction après la validation ou l’annulation.

SQLSTATE
26501

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